Skip to content

claboran/analog-talk-registry

Repository files navigation

DevFest KA - Full-Stack Analog Application

A modern full-stack application built with Analog and Nx, featuring authentication with Keycloak and a robust development environment.

🚀 Developer Onboarding

Getting started with this project is straightforward. Follow these steps to set up your development environment:

Prerequisites

Quick Start

  1. Clone the repository

    git clone <repository-url>
    cd devfestka
  2. Install dependencies

    npm install
  3. Start the infrastructure services

    docker compose -f docker/docker-compose.yml up -d --build

    This will start Keycloak and any other required services in the background.

  4. Start the development server

  • Using npx

    npx nx run dev-o-con:serve
  • Using the npm script from package.json

    npm run nx:serve:dev-o-con
  1. Access the application

Project Structure

devfestka/
├── apps/
│   ├── dev-o-con/           # Main Analog application
│   └── dev-o-con-e2e/       # End-to-end tests
├── libs/                    # Shared libraries
├── docker/                  # Docker configuration
│   ├── docker-compose.yml   # Infrastructure services
│   └── keycloak/            # Keycloak configuration
└── ...

🛠️ Development

Available Commands

Start development server:

npx nx run dev-o-con:serve

Build for production:

npx nx build dev-o-con

Run tests:

npx nx test dev-o-con

Run e2e tests:

npx nx e2e dev-o-con-e2e

Temporary E2E Exception (2025-10-16)

Per Constitution Principle V directive, E2E tests are temporarily non-gating. During this stabilization window you MUST still:

  1. Write and maintain unit tests (mandatory)
  2. Provide integration/service tests for cross-library behavior (mandatory)

You MAY run existing E2E specs locally for additional assurance, but failing E2E specs do not block merges until this notice is removed. Remove this section once the directive is revoked.

Lint code:

npx nx lint dev-o-con

Working with Docker Services

Start all services:

docker compose -f docker/docker-compose.yml up -d

Stop all services:

docker compose -f docker/docker-compose.yml down

View logs:

docker compose -f docker/docker-compose.yml logs -f

Authentication Setup

This project uses Keycloak for authentication. The Keycloak instance is pre-configured with:

  • Admin user: admin / admin
  • Realm configuration imported from docker/keycloak/imports/realm-config.json

🏗️ Architecture

This project is built with:

  • Analog: Meta-framework for Angular with full-stack capabilities
  • Nx: Monorepo tooling for scalable development
  • Vite: Fast build tool and dev server
  • Keycloak: Authentication and authorization
  • TypeScript: Type-safe development
  • @ngrx/signals: Lightweight state management with SignalStore

State Management

State management follows a layered architecture using @ngrx/signals:

  • Component-level stores: Scoped to individual components for local state
  • Feature stores: Shared state for feature modules
  • Domain stores: Cross-feature state within bounded contexts
  • Feature services: Orchestrate multiple stores without direct coupling
  • Resource API Integration: Use Angular's Resource API within stores via withProps() for declarative reactive data loading with automatic race condition prevention

Key patterns:

  • Private resources in stores (underscore prefix) as implementation details
  • Resource params linked to store state for reactive loading
  • signalMethod() for methods accepting signals or values
  • Error handling via hooks with effects tracking resource errors
  • Prefer Resources over rxMethod() for purely reactive data flows

See Constitution Principle XIV for detailed guidance.

📝 Contributing

  1. Create a feature branch from main
  2. Make your changes
  3. Run tests and linting
  4. Submit a pull request

🔗 Useful Resources

🎯 Nx Workspace Features

This workspace includes:

Install Nx Console

For the best development experience, install the Nx Console extension for VS Code or IntelliJ.


Happy coding! 🎉

About

Google DevFest 2025, Gregor Speck, Christian Laboranowitsch

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •