Goal
A low-traffic app someone can actually click through.
The first phase teaches the full request cycle without pretending the app already has millions of users. The system should stay simple, cheap, and easy to understand.
- React and Vite frontend using plain JavaScript.
- Go backend with JSON API endpoints.
- PostgreSQL schema, migrations, and seed data.
- Logged-out feed, post detail pages, comments, accounts, voting, sorting, and deployment.
Weeks 1-2
Set up the smallest working stack.
Build
Create the Vite app, Go server, health endpoint, basic project layout, and first Git checkpoints.
Learn
Localhost, ports, HTTP, JSON, environment variables, and how frontend and backend processes run at the same time.
Starter prompt
I want to start a beginner-friendly Reddit-like web app.
Use plain JavaScript, React, Vite, a Go backend, and PostgreSQL.
Do not use TypeScript.
Do not add auth, comments, voting, caching, queues, Docker, Redis, or search yet.
First, inspect this empty project folder and propose the smallest file structure.
Then create only the setup needed to show a React homepage and a Go health check endpoint locally.
Explain the commands I should run after you make the files.
Weeks 3-4
Read seeded posts from PostgreSQL.
Build the first real feature: a simple logged-out homepage inspired by a Reddit feed, but much smaller.
- Create community and post tables.
- Seed eight realistic posts.
- Add `GET /api/posts` in Go.
- Fetch and render posts in React with loading, empty, and error states.
Feature prompt
Add the first real feature: a logged-out homepage feed.
Requirements:
- Use PostgreSQL as the source of truth.
- Add a small schema for communities and posts.
- Add seed data with 8 realistic posts.
- Add a Go endpoint that returns posts as JSON.
- Update the React homepage to fetch and display those posts.
- Keep the UI simple and readable, inspired by a Reddit feed but not a clone.
- Include loading, empty, and error states.
- Do not add login, comments, voting behavior, infinite scroll, Redis, or queues yet.
Weeks 5-8
Add the first user workflows.
- Create-post form with server validation.
- Post detail route with one post and its comments.
- Flat comment form, still no threaded replies.
- Friendly frontend states for validation and failed requests.
Weeks 9-12
Add accounts, voting, sorting, and deployment.
- Email/password signup, login, logout, and current-user endpoint.
- Cookie-based sessions and secure password hashing.
- Post upvotes with a uniqueness constraint.
- Feed sorting by newest and top.
- Deploy the app to a low-cost host with a production PostgreSQL database.
Debugging loop
Learn where the error came from before asking for the fix.
Browser errors come from Chrome or Firefox DevTools. Backend errors come from the terminal running Go. A failed API request may require both.
Error prompt
The homepage is not loading posts.
Browser console:
[paste console error]
Browser network tab:
[paste failed request, status code, and response if visible]
Go server terminal:
[paste backend log output]
Please tell me which layer is failing: React frontend, browser/network, Go API, or PostgreSQL.
Explain the evidence, then make the smallest fix.
Done means
The MVP works locally and has one small deployment.
- A logged-out visitor can read the feed.
- A logged-in user can create posts and comments.
- Voting and sorting work without duplicate votes.
- The app has basic deployment instructions and a production URL.
- The learner can recover from common frontend, backend, and PostgreSQL errors.