Skip to content

joshua-sajeev/taskflow

Repository files navigation

TaskFlow - Learning Go, Docker & Clean Architecture

A production-grade REST API built to master Go, Docker, and modern backend development practices.

Go Version Docker License: MIT Tests

TaskFlow is a robust task management API designed to demonstrate Clean Architecture principles in Go. It features secure authentication, containerized environments, and a comprehensive testing suite.

This is a learning project. It documents my journey from "Hello World" to a production-ready backend structure.


Key Features

  • Clean Architecture: Strict separation of concerns (Handlers → Services → Repositories).
  • Secure Auth: JWT implementation with Bcrypt password hashing.
  • Containerization: Optimized Multi-stage Docker builds for Dev and Prod.
  • Quality Assurance: Unit & Integration tests with high coverage + Race detection.
  • Developer Experience: Hot-reloading (Air), Swagger docs

Documentation

I have documented the technical details and my learning process in the docs/ folder:

  • Architecture & Design - Breakdowns of the Clean Architecture layers and folder structure.
  • API Reference - Endpoints, Request/Response examples, and Auth flow diagrams.
  • Development Guide - Setup instructions, testing commands, and troubleshooting.
  • What I Learned - A log of challenges faced and concepts mastered (Go routines, Interfaces, Docker networking).

Quick Start

The easiest way to run the project is with Docker Compose.

Prerequisites

  • Docker & Docker Compose

Run with One Command

# 1. Clone the repo
git clone https://github.com/joshua-sajeev/taskflow.git
cd taskflow

# 2. Setup Environment (Important!)
cp .env.example .env
# Open .env and set a secure JWT_SECRET

# 3. Start the App
docker-compose up --build

The API will be available at http://localhost:8080.

Verify it works

Visit the Swagger UI to interact with the API: http://localhost:8080/swagger/index.html

Tech Stack

Category Technology Usage
Language Go (Golang) Core logic
Framework Gin HTTP Routing & Middleware
Database MySQL 8.0 Persistent storage
ORM GORM Data access & Migrations
DevOps Docker Containerization & Compose
Testing Testify Assertions & Mocks
Docs Swagger API Documentation

Contributing & Feedback

This project is open for code review! If you see a non-idiomatic Go pattern or a security flaw, please open an issue.

About

A taskmanager in steroids

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages