Do-It is a to-do application built with Golang and a REST API. It offers a fast and scalable solution for task management, enabling users to easily add, update, and delete tasks. The app uses Golang’s robust performance alongside a well-structured REST API to provide a seamless and efficient experience for managing daily tasks.
- ✅ Full CRUD for tasks
- 📝 Swagger (OpenAPI 3) UI for API testing
- ⚙️ Dockerized environment
- 🧪 Testable structure with modular design
- ♻️ Clean Restful design
- 🌐
.env
support for easy configuration - 🪶 Lightweight and dependency minimal
Prerequisites
- Go ≥1.22 (module support)
- Docker & Docker Compose (optional, for containerized runs)
- Make sure to have a
.env
file—see.env.example
for reference.
git clone https://github.com/milwad-dev/do-it.git
cd do-it
cp .env.example .env # configure DB and API settings
go mod download # installs dependencies
go run main.go # starts server on :8000 by default
docker-compose up --build
./wait-for-db.sh # waits for DB container to be ready
Access Swagger UI at:
http://localhost:8000/api/swagger/
Inspect interactive docs and Swagger JSON at:
http://localhost:8000/api/swagger/doc.json
├── internal/ # core business logic and handlers
├── http-requests/ # HTTP client utilities
├── docs/ # auto-generated Swagger docs (via swaggo)
├── Dockerfile
├── docker-compose.yml
├── wait-for-db.sh # DB readiness helper
└── main.go # app entry point
Customize using .env file:
APP_PORT=8000
DB_CONNECTION=...
DB_HOST=...
DB_PORT=...
DB_DATABASE=...
DB_USERNAME=...
DB_PASSWORD=...
Contributions are welcome—follow these steps:
- Fork the repo
- Create a new branch:
git checkout -b feature/YourFeature
- Make changes & add tests
- Submit a Pull Request
This project is open‑source under the MIT License. See the full text in LICENSE.
- ToWork (Laravel + REST API) – ToDo app backend in Laravel
- Go Shop – Another REST‑based to‑do application in Go
Created with ❤️ by Milwad Khosravi
- Add Grafana
- Add Elasticsearch
- Use Goroutines
- Use Kafka
- Add scheduler for reminder tasks