Developer Guide

For developers looking to contribute to Jovvix or extend its functionality, this guide offers in-depth technical documentation. Dive into the codebase, understand the architecture, and learn how to set up your development environment. This section is essential for anyone looking to build upon or integrate with the Jovvix platform.

Environment Requirements

Component Version
Node.js v18.0+
Go v1.21+
Docker Latest stable
Docker Compose v3.8+

Tech Stack

Component Tech
Frontend Nuxt3, Vue.js, Vuetify, Bootstrap, Chart.js, Highlight.js
Backend Go (Golang), Ory Kratos, PostgreSQL, Redis
Auth Ory Kratos + SMTP
Storage AWS S3 Compatible API (Minio for local dev)
Realtime WebSockets
Infra Docker, GitHub Actions (public), NGINX

Frontend Stack

Core Framework
Technology Version Description
Nuxt3 ^3.14.1592 Vue.js framework for server-side rendering and static site generation
UI Libraries & Styling
Technology Version Description
Vuetify ^3.5.6 Material Design component framework for Vue.js
Bootstrap ^5.2.3 CSS framework for responsive design
Data Visualization & Icons
Technology Version Description
Chart.js ^4.4.4 JavaScript charting library
Highlight.js ^11.10.0 Syntax highlighting library
FontAwesome ^6.4.2 Icon library (core, solid, brands)
State Management & Utilities
Technology Version Description
Pinia ^2.1.7 Vue.js state management
@pinia/nuxt ^0.5.1 Nuxt integration for Pinia
vue-toastification ^2.0.0-rc.5 Toast notifications for Vue.js
qrcode.vue ^3.5.1 QR code generator component

Backend Stack

Core Runtime & Framework
Technology Version Description
Go (Golang) 1.21 (toolchain 1.21.6) Backend programming language
Fiber v2.51.0 Express-inspired web framework for Go
fasthttp/websocket v1.5.7 WebSocket implementation for real-time communication
Database & Caching
Technology Version Description
PostgreSQL 15.2-alpine Primary relational database
Redis latest In-memory data structure store for caching

Authentication

Technology Version Description
Ory Kratos v1.0.0 Identity and user management system

Storage Solutions

Technology Version Description
AWS S3 SDK v1.2.0.0 AWS S3 integration for cloud storage
MinIO latest (quay.io/minio/minio) S3-compatible object storage for local development

File Storage Configuration

  • Production: AWS S3 Compatible API
  • Local Development: MinIO server

Notes

  • Vue.js Version: Not explicitly listed in package.json as it's bundled with Nuxt 3.14, which uses Vue 3.x

  • Docker Images: Using official images with specific tags for reproducible builds

  • Development vs Production: Some services use different configurations between local development and production environments

  • Version Pinning: Most dependencies use caret (^) versioning for automatic minor updates while maintaining compatibility

Local Setup (Manual)

Backend Setup
cd api
cp .env_example .env
docker-compose up
go run app_go migrate up
go run app_go api
Frontend Setup
cd app
cp .env_example .env
npm install
npm run dev

Features for Devs

  • Modular Code Structure

    Clean separation between api and app — each layer ships and evolves on its own.

  • REST APIs with Swagger UI

    Fully documented endpoints with an interactive Swagger UI out of the box.

  • Object Storage

    Drop-in S3-compatible storage via MinIO locally and AWS S3 in production.

  • SMTP Mailing

    Local email testing wired up with Mailpit — no third-party required in dev.

  • Environment Driven

    Configure everything through environment variables — no hardcoded secrets.

  • 12-Factor Compatible

    Follows 12-factor app design principles for portable, cloud-ready deploys.

Contribute

Jovvix is open-source under GNU AGPL 3.0. Fork the repo, ship a fix, or propose a feature — all are welcome.