TaskFlowGoravel series
Build a production Go API, one episode at a time.
TaskFlow is a task manager with accounts, roles, file uploads, background jobs and email. We build it in Goravel, the Laravel-style Golang framework, from an empty folder to a container running in production.
02 20
Episodes
2 of 20 published-
19:36 01Installation & Project Architecture A running Goravel skeleton, providers wired, Docker up -
14:07 02Routing & Response Route files registered, JSON responses shaped
Coming next
Order and scope can move as the build does.
Foundation
A running project, routes, request data, a database and the models on top of it
- 03 Reading Request DataNext Path, query string and JSON body, read from the request
- 04 Models & Migrations A users table, generated from the model
- 05 Relationships: Belongs To Tasks tied to users with foreign keys, loaded together
- 06 Relationships: Has Many Notifications, and a user loaded with all their tasks
Application
Data to work with, validation, accounts, and who is allowed to do what
- 07 Factories & Seeding Fake users from a factory, seeded with one command
- 08 Validation with Form Requests Rejecting bad input before it reaches a handler
- 09 Register & Login with JWT Accounts, hashed passwords, signed tokens
- 10 Auth Middleware Routes that know who is calling them
- 11 Gates & Policies Managers create and assign, members update status
Production
The real endpoints, then everything a deployed app needs around them
- 12 Task CRUD The task endpoints the whole app exists for
- 13 File Storage: Attachments Uploads on a task, stored and served
- 14 Events & Listeners Notifications decoupled from the handlers
- 15 Queues & Jobs Slow work moved off the request
- 16 Mail: Assignment Emails A real email when a task lands on someone
- 17 Cache: Dashboard & Lists Hot reads served without touching Postgres
- 18 Scheduling & Artisan Commands Recurring work and a command you wrote
- 19 Feature Testing The whole API covered, top to bottom
- 20 Ship It: Docker & Deploy TaskFlow live on a URL you can share