Hello 👋🏼 Welcome to the MemUI Project. This project is my first public attempt to build a project in public and provide an end-to-end tutorial series about the development process — from the idea review to the development, release, and documentation.
The tutorial consists of blog posts, video materials, and the source code itself. This page contains links to all resources.
Why MemUI? Because it is simple. I wanted to start with something small to cover the end-to-end process and make it to the first release, even if it is an MVP and not production-ready.
My goal is to have more full tutorials about the end-to-end development of software projects and applications. You can read more about this here 👉🏼 About CoderVlogger.
The following link contains the most recent course materials with all end-to-end steps and tutorials:
This section explains the content of this tutorial and how to use it.
How to use this tutorial?
- What can you learn from this tutorial?
- Tutorial's structure:
- - How to use Git and Git branches for tutorial's source code;
- Other related materials;
Project Setup and First Steps
Create the project's repository and set up a new Go package. Then, we will write the initial version and introduce a test application for manual tests.
- Overview and Project's Repository;
- Idea Review and Preparation;
- Naming and GitHub Repository;
- Idea review and Preparation;
- The initial version, Go package (go mod), and test app:
- - Project as a package;
- - Go mod replace directory;
- - Test app and local manual testing;
Public API and Reflection
We will create an MVP (minimum viable product) version of the project and its public API. Additionally, we will limit the accepted objects by checking their kind with the reflection.
- Defining public API;
- Accept only pointers by using reflection;
HTTP Server and JSON Viewer
This section is all about "UI" in MemUI 🙂 For the initial version, the "UI" will be auto-generated JSON content. We will make it accessible via the HTTP server.
- Serve an HTTP server with a standard net/http package;
- Index API to list all internal types;
- Explore API to list all objects for a selected type;
- Marshal to JSON;
Testing and Project Artifacts
In this part, we will introduce unit tests and some additional automation, which will help us maintain high coding quality.
- Unit tests;
- Linter for Go project;
- Makefile with some base targets;
- The initial version of the README;
- Testing: introduce initial testing strategy:
- - Test the core Go implementation with table tests;
- - Using two approaches for table-driven tests (reference article);
At the moment, this tutorial is in a work in progress state. However, you can find some ideas for future topics in the following sections.