Skip to content

samgozman/validity.red

Repository files navigation

Validity.Red

Unit tests

Quality Gate Status Codacy Badge

Validity.Red is a free web service for managing the expiration dates of documents (passports, travel cards, vaccinations, insurance, etc) and synchronizing them with your calendar. It is written in Go, TypeScript, Vue, and Rust.

Main features

  • Create documents with expiration dates and notifications
  • Manage your documents, categories them, and add notes
  • Create multiple notifications for each document
  • Sync your notifications with your calendar app (Google Calendar, Apple Calendar, Outlook, etc.)

More features are coming soon! The project is in active development.

Services architecture

graph LR
    A(frontend-service: TS, Vue) === |REST| B((gateway-service: Go))
    B --- J[(Redis DB)]
    B --- |gRPC| C(user-service: Go) --- F[(Postgres)]
    B --- |gRPC| D(document-service: Go) --- G[(Postgres)]
    B --- |gRPC| E(calendar-service: Rust)
    B -.- |REST| H([MailerSend: emails service])
    K([Sentry: app error tracking])
    L([New Relic: server monitoring])
    M([Backblaze S3: for DB backups])
    
    click A "https://github.com/samgozman/validity.red/tree/main/frontend-service" "Frontend SPA written in VueJS and TypeScript"
    click B "https://github.com/samgozman/validity.red/tree/main/gateway-service" "Gateway service written in Go"
    click C "https://github.com/samgozman/validity.red/tree/main/user-service" "Users service written in Go"
    click D "https://github.com/samgozman/validity.red/tree/main/document-service" "Documents service written in Go"
    click E "https://github.com/samgozman/validity.red/tree/main/calendar-service" "Calendar service written in Rust"

Quick start into development

To run the Validity.Red app locally, you will need to have the following dependencies installed on your system:

  • Docker
  • Docker Compose
  • Go
  • Rust
  • GolangCI-Lint
  • rustfmt
  • protoc
  • Cargo
  • Node.js v18

Download all the GO service dependencies:

make download_go_deps

Download and build all Rust dependencies:

make build_rust

Download all NPM dependencies:

make download_npm_deps

After that you can simply run the following command to run backend applications:

make up_build

and then to start up SPA dev server:

make spa_run_dev

And thats it! For more information please read the documentation provided in each services folder.

Production environment

Validity.Red deployment and automation relies on GitHub CI and Terraform. You can find out more in the deployment section.

Contribution

If you would like to contribute to the development of Validity.Red, please fork the repository and submit a pull request with your changes. We welcome any contributions that improve the service. You can also view the current project board here.

You can also contribute by reporting bugs or suggesting new features. Please use the GitHub issues for that.

❤️ Support the project

This project is 100% open-source and is available for free. If you like it - you can support Validity.Red financially. Please look at FUNDING.yml page.

License

Validity.Red is licensed under the MIT License.