An open API service indexing awesome lists of open source software.

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

Awesome Lists containing this project

README

          

# Notes API: Golang with NoSQL Databases

[![Author](https://img.shields.io/badge/Author-Vadim%20Starichkov-blue?style=for-the-badge)](https://github.com/starichkov)
![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/starichkov/golang-simple-notes?style=for-the-badge)
[![GitHub License](https://img.shields.io/github/license/starichkov/golang-simple-notes?style=for-the-badge)](https://github.com/starichkov/golang-simple-notes/blob/main/LICENSE.md)
[![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/starichkov/golang-simple-notes/build.yml?style=for-the-badge)](https://github.com/starichkov/golang-simple-notes/actions/workflows/build.yml)
[![Codecov](https://img.shields.io/codecov/c/github/starichkov/golang-simple-notes?style=for-the-badge)](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**