Skip to content

pmalirz/atlas

Repository files navigation

Atlas

Atlas

Build dynamic, data-driven business applications—without the complexity.

CI Status Test Coverage Codecov Node.js TypeScript React NestJS License


✨ What is Atlas?

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.


🎯 Key Features

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)

🏗️ Architecture

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

🛠️ Code Quality & Architecture

Atlas strictly adheres to modern TypeScript, React, and NestJS best practices:

  • Strict Type Safety: Fully typed across the monorepo with strict mode enabled, using unknown over any with 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.

🚀 Quick Start

# 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:ui

🗎 Documentation

Detailed documentation is available in the docs/ directory:


🌱 Seeds

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.


🧪 Testing

# 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:e2e

Server 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)

🤝 Contributing

Contributions are welcome! Please see our contributing guidelines for more details.


📄 License

This project is licensed under the MIT License.


Built with ❤️ for developers who want to move fast without sacrificing quality.

About

Developer-centric, low-code platform for building rich, data-driven business applications

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors