Build dynamic, data-driven business applications—without the complexity.
Atlas is a modern low-code platform for building rich, data-driven business applications. Define your entity model dynamically, extend it with custom logic through a pluggable architecture, and deploy production-ready solutions in record time.
🚀 Customize it to your needs. Deploy ready-to-use seeds. Extend and evolve.
| Feature | Description |
|---|---|
| Dynamic Data Model | Generic Entity-Relation model allows runtime schema extension without migrations, with relation direction inferred from source/target entity types |
| Schema-Driven UI | UI layouts, forms, and views adapt automatically based on backend JSON configuration |
| Direction-Aware Relation Editing | Relation direction is inferred from relation definitions (fromEntityType/toEntityType) with optional side override, and attributed relations are editable from both sides |
| Relation Visualization | Interactive, force-directed graph views for exploring complex entity relationships |
| Operational Dashboard | Dynamic dashboard cards, RBAC-aware quick create actions, and recent-item insights adapt to tenant menu configuration and entity metadata |
| Responsive Navigation UX | Atlas UI now includes a mobile navigation drawer with overlay dismissal, route-close behavior, and keyboard skip-to-content support |
| Consistent UI Composition | shadcn primitives are the first-class component layer, while atlas-* classes are reserved for layout composition only |
| Audit & Compliance | Built-in audit logging for all data changes, supporting DORA and compliance requirements |
| RBAC-Aware Editing UX | Field-level permissions are enforced in UI and API with tenant-scoped RBAC endpoints; non-writable fields stay visible in read-only mode |
| Theme-Aware Auth UX | Login, forgot/reset password, and email verification pages share a reusable branding panel with theme-integrated visuals and improved page-level transitions |
| Theme-Bound Main Shaders | Theme presets can assign GLSL shader backgrounds per light/dark mode (for example, Chromatic Silver dark mode uses an aurora-veil shader behind authenticated main content) |
| Ready-to-Use Seeds | Bootstrap your project with pre-built templates (e.g., EAP - Enterprise Application Portfolio) |
| Full-Stack TypeScript | End-to-end type safety with shared contracts between frontend and backend |
| Workflow Engine | Rule-based state machine for governing field-level transitions with JavaScript conditions, RBAC integration, and automatic enforcement |
| Pluggable Auth | Native and extensible authentication supporting multiple providers |
| Email Integration | Pluggable email system for verification and password resets (Nodemailer, SMTP) |
app-atlas/
├── atlas-server/ # NestJS backend with Prisma ORM
├── atlas-ui/ # React frontend with schema-driven engine
├── atlas-shared/ # Shared types and contracts (Single Source of Truth)
├── atlas-e2e/ # End-to-end tests (API + UI)
└── docs/ # Detailed documentation
Atlas strictly adheres to modern TypeScript, React, and NestJS best practices:
- Strict Type Safety: Fully typed across the monorepo with
strictmode enabled, usingunknownoveranywith Zod for robust runtime boundaries. - NestJS Best Practices: Extensive use of Guards for authentication/RBAC, Pipes for validation, and robust Dependency Injection for cleanly separated logic.
- React Standards: Functional components, proper memoization (
useMemo,useCallback), and extensive use of hooks to prevent unnecessary re-renders. - Security by Design: Parameterized database queries via Prisma to prevent SQL injections, OWASP Top 10 mitigations, and comprehensive multi-tenancy protections.
# Clone the repository
git clone https://github.com/pmalirz/app-atlas.git
cd app-atlas
# Install dependencies
npm install
# Start the database
docker compose up -d
# Build shared library (required by both server and ui)
npm run build -w atlas-shared
# Run database migrations & seed data
# Note: db:seed requires the shared library to be built
npm run db:generate -w atlas-server
npm run db:migrate:deploy -w atlas-server
npm run db:seed -w atlas-server -- --seed eap
# Start the development servers
npm run dev:server &
npm run dev:uiDetailed documentation is available in the docs/ directory:
- Data Model Guide — Understanding the generic Entity-Relation architecture
- UI Engine Guide — Configuring the schema-driven UI system, widgets, and menus
- Workflow Engine Guide — Rule-based state machines for field transitions with conditions and RBAC
- Theme System Guide — How to switch, customize, and extend themes
- Authentication Guide — User registration, login, password reset, and email verification
- RBAC Guide — Role-Based Access Control with entity and attribute-level permissions
- Audit System Guide — Compliance, non-repudiation, and database-level audit logging
- Email Setup Guide — Configure Mailpit, Resend, or other SMTP providers
- Frontend Guide — Setup and development of the React application
- Backend Guide — Setup and development of the NestJS API
Atlas ships with ready-to-deploy seeds — pre-configured data models that you can use as starting points:
| Seed | Description |
|---|---|
| eap | Enterprise Application Portfolio — manage applications, technologies, and integrations |
💡 Seeds are fully customizable. Use them as-is or modify to fit your domain.
# Run API e2e tests locally (requires database)
npm run test:api -w atlas-e2e
# Run UI e2e tests locally
npm run test:ui -w atlas-e2e
# Run E2E tests in Docker (API + UI validation)
npm run test:e2eServer unit tests in atlas-server use a dedicated tsconfig.spec.json and Jest alias mapping to resolve @app-atlas/shared from workspace sources during tests.
The atlas-e2e module contains all end-to-end tests:
- API Tests — Jest + Supertest tests for entities, relations, and definitions (schemas)
- UI Tests — Playwright smoke tests for navigation, forms, and data persistence
RBAC API coverage includes attribute-level enforcement tests in atlas-e2e/tests/api/rbac.e2e-spec.ts, validating:
- read-only users are denied entity updates (
403) - regular users can read all permitted attributes while updating only explicitly updatable attributes
- non-updatable attributes are rejected with
403(no partial updates)
Contributions are welcome! Please see our contributing guidelines for more details.
This project is licensed under the MIT License.
Built with ❤️ for developers who want to move fast without sacrificing quality.