Skip to content

starichkov/golang-simple-notes

Repository files navigation

Notes API: Golang with NoSQL Databases

Author GitHub go.mod Go version GitHub License GitHub Actions Workflow Status Codecov

A simple microservice for notes management with REST and gRPC APIs, supporting multiple storage backends.

This project is generated using JetBrains Junie and several other AI coding agents to evaluate agent capabilities.

🚀 Features

  • Dual API Support: Full CRUD operations via both REST and gRPC.
  • Multiple Storage Backends:
    • In-memory: Ideal for local development and testing.
    • CouchDB: Support for document-oriented storage with CouchDB.
    • MongoDB: Support for document-oriented storage with MongoDB.
  • Clean Architecture: Decoupled domain logic, storage interfaces, and transport layers.
  • Dockerized: Easy deployment with Docker and Docker Compose.
  • Comprehensive Testing: Unit tests and integration tests using testcontainers-go.

🛠 Prerequisites

  • Go: 1.25.6 or later (as specified in go.mod).
  • Docker & Docker Compose: Required for running databases and integration tests.

📁 Project Structure

.
├── grpc/           # gRPC service implementation
├── model/          # Domain entities (Note)
├── proto/          # gRPC service definitions (Protocol Buffers)
├── rest/           # REST API handlers and middleware
├── storage/        # Storage interface and implementations (Memory, CouchDB, MongoDB)
├── app.go          # Application wiring and lifecycle management
├── config.go       # Configuration management via environment variables
├── Dockerfile      # Docker image definition
├── docker-compose* # Docker Compose configurations for various setups
└── main.go         # Application entry point

📚 Documentation

For more detailed information, please refer to the following guides:

🧾 About TemplateTasks

TemplateTasks is a developer-focused initiative by Vadim Starichkov, currently operated as sole proprietorship in Finland.
All code is released under open-source licenses. Ownership may be transferred to a registered business entity in the future.

📄 License & Attribution

This project is licensed under the MIT License — see the LICENSE file for details.

Using This Project?

If you use this code in your own projects, attribution is required under the MIT License:

Based on golang-simple-notes by Vadim Starichkov, TemplateTasks

https://github.com/starichkov/golang-simple-notes

Copyright © 2026 Vadim Starichkov, TemplateTasks

About

Simple notes app written in Go, with assitance from several AI coding agents to evaulate their capabilities - Cursor and JetBrains Junie

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

  •  

Contributors