https://github.com/starichkov/golang-simple-notes
Simple notes app written in Go, with assitance from several AI coding agents to evaulate their capabilities - Cursor and JetBrains Junie
https://github.com/starichkov/golang-simple-notes
couchdb database-agnostic go golang grpc grpc-go mongodb rest-api
Last synced: 2 months ago
JSON representation
Simple notes app written in Go, with assitance from several AI coding agents to evaulate their capabilities - Cursor and JetBrains Junie
- Host: GitHub
- URL: https://github.com/starichkov/golang-simple-notes
- Owner: starichkov
- License: mit
- Created: 2025-05-15T12:49:52.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2026-01-17T14:33:22.000Z (5 months ago)
- Last Synced: 2026-01-17T23:56:16.030Z (5 months ago)
- Topics: couchdb, database-agnostic, go, golang, grpc, grpc-go, mongodb, rest-api
- Language: Go
- Homepage:
- Size: 139 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
Awesome Lists containing this project
README
# Notes API: Golang with NoSQL Databases
[](https://github.com/starichkov)

[](https://github.com/starichkov/golang-simple-notes/blob/main/LICENSE.md)
[](https://github.com/starichkov/golang-simple-notes/actions/workflows/build.yml)
[](https://codecov.io/gh/starichkov/golang-simple-notes)
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
```text
.
โโโ 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:
- [**Setup & Running**](RUNNING.md) - How to install, compile, and run the application.
- [**API Reference**](API.md) - Details about REST and gRPC endpoints.
- [**Testing**](TESTING.md) - How to run unit and integration tests.
## ๐งพ 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](LICENSE.md) 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**