A simple and modular 🧱 Go-based Note Taking API built with:
- 💎 Clean Architecture
- 💡 SOLID Principles
- 🧪 Testable structure
- 🗃️ SQLite (can be easily swapped)
- ⚙️ Dependency Injection for better maintainability
- 🌐 Simple REST API
Check out a quick walkthrough of the project setup and code structure:
.
├── cmd # App entrypoint
│ └── server # Main server file
├── commons # Shared utilities (config, logging, DB, etc.)
├── modules
│ └── notes
│ ├── data # Data layer (models, datasource, impls)
│ ├── domain # Domain layer (interfaces, usecases)
│ ├── di # Dependency injection
│ └── presentation # HTTP controllers and routers
├── test.html # Quick test UI (excluded from stats)
├── notes.db # SQLite database file
└── README.md # You're here!
- Separated concerns across data, domain, and presentation
- Easily testable and scalable
- Each layer has a single responsibility
- Interfaces are implemented explicitly
- High-level code is decoupled from low-level details
git clone https://github.com/RoyRoki/NoteTaker.git && cd NoteTaker
go run cmd/server/main.go
GET /notes
POST /notes
PUT /notes/:id
DELETE /notes/:id
You can use test.html
locally to quickly test endpoints.
- Go 🐹
- SQLite 🛢️
- chi router 🧭
- sqlx (optionally pluggable)
PRs and stars are welcome! ⭐ If you're interested in Clean Architecture or Go backend design, this project is a great starting point!
ROCKET © RoyRoki