Files
omega/03_Architecture_Overview.md
Fran Jurmanović bc868abbef init docs
2025-07-06 15:05:04 +02:00

2.0 KiB

  1. Architecture Overview Core Architecture: Decoupled Frontend & Backend

The application is built on a modern, decoupled architecture:

Go Backend: A standalone service responsible for all core business logic. This includes user authentication, database interactions, and processing data from third-party integrations. It exposes all functionality through a single GraphQL API.

Next.js Frontend: A standalone service that consumes the Go backend's GraphQL API. It is responsible for the entire user interface and user experience. It leverages Next.js's Server-Side Rendering (SSR) capabilities to deliver fast, SEO-friendly pages.

This separation of concerns allows for independent development, scaling, and maintenance of the frontend and backend. Backend Integrations Model

All third-party integrations (e.g., connecting to GitHub) are handled exclusively by the Go backend.

Security: API keys and other secrets are stored securely on the server and are never exposed to the client-side.

Modularity: Each integration is built as a distinct Go package that implements a common Integration interface. This makes the system extensible, as new integrations can be added without modifying the core application logic.

Customization: Users with access to the backend codebase can "install" new integrations by adding the relevant package and recompiling the application.

Future Vision: Frontend Plugin System

For a future version (v2.0+), a frontend plugin system is envisioned. This is distinct from backend integrations.

Purpose: To allow developers to build and add new UI features and functionality directly into the frontend application.

Architecture: This will be achieved by running third-party JavaScript code in a sandboxed <iframe> for security.

SDK: A dedicated frontend "Plugin API" package (@your-app/plugin-sdk) will be developed. This will be the secure bridge allowing plugins to interact with the main application and render components in designated "slots."