Skip to content

vtsitlak/silver

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

164 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Silver

Silver is an Nx monorepo containing multiple Angular applications and shared libraries. This document describes the workspace structure, technologies, and how to run each project.


Table of contents


Technologies

Area Stack
Monorepo Nx 22.x
Frontend Angular 21, Ionic 8 (tabata-ai), Angular Material (other apps)
State NgRx Signals (tabata), NgRx Store/Effects (notes, vehicles)
Auth Angular Fire (Firebase Auth) in tabata-ai
Mobile Capacitor 6 (tabata-ai)
i18n Angular localize (tabata-ai: en, nl, el)
Testing Jest (unit), Playwright (e2e for tabata-ai)
Backend Express (notes-server, vehicles-server)
Styling SCSS, Tailwind CSS where configured

Workspace structure

silver/
├── api/                    # Vercel serverless functions (workouts proxy, health check)
├── apps/
│   ├── tabata-ai/          # Tabata workout app (Angular + Ionic + Firebase) — in progress
│   ├── tabata-ai-e2e/      # E2E tests for tabata-ai (Playwright)
│   ├── notes-app/          # Notes Angular app
│   └── vehicles-app/       # Vehicles Angular app
├── libs/
│   ├── tabata/             # Feature libs for tabata-ai (tag: scope:tabata)
│   │   ├── auth/           # Auth (login, register, forgot password, Firebase)
│   │   ├── home/
│   │   ├── workouts-editor/# Workout editor components
│   │   ├── tabata-workouts/# Workouts store, service, facade (Upstash backend)
│   │   ├── history/
│   │   ├── profile/
│   │   ├── ui/             # Tabs, toolbar, shared UI
│   │   ├── exercises/      # Exercise DB API service, store, facade
│   │   └── utils/          # Helpers + centralized test mocks
│   ├── notes/              # Notes feature libs (tag: scope:notes)
│   │   ├── notes-auth/
│   │   ├── notes-ui/
│   │   ├── notes-store/
│   │   └── notes-server/
│   ├── vehicles/           # Vehicles feature libs (tag: scope:vehicles)
│   │   ├── vehicles-ui/
│   │   ├── vehicles-store/
│   │   └── vehicles-server/
│   └── shared/             # Shared libs (tag: scope:shared)
│       └── helpers/        # Shared utilities (e.g. ToastService)
├── docs/
│   └── WORKOUTS_API_VERCEL.md  # Vercel + Upstash setup guide
├── vercel.json             # Vercel deployment config (Root Directory = empty)
├── nx.json
├── package.json
└── README.md

Projects overview

Project Type Description
tabata-ai App Tabata workout app with auth, tabs (Home, Workouts, History, Profile). Still in progress — many features are missing. See apps/tabata-ai/README.md.
tabata-ai-e2e E2E Playwright tests for tabata-ai. Run after npx playwright install if needed.
notes-app App Notes application (Angular + Express server).
vehicles-app App Vehicles demo app with JSON server backend.
auth Lib Firebase auth, login/register/forgot-password, AuthStore/AuthFacade.
home, workouts-editor, history, profile Lib Tabata tab feature components.
ui Lib Tabata shared UI (tabs, toolbar).
exercises Lib Exercise data (ExerciseDB API), ExercisesStore, ExercisesFacade.
utils Lib Tabata utilities.
notes-auth, notes-ui, notes-store, notes-server Lib Notes feature and Express server.
vehicles-ui, vehicles-store, vehicles-server Lib Vehicles feature and server.
helpers Lib Shared helpers (e.g. ToastService).

Getting started

Prerequisites

  • Node.js (v20+ recommended)
  • npm or yarn

Install dependencies

npm install

Optional: Playwright browsers (for tabata-ai e2e)

If you plan to run e2e tests for tabata-ai:

npx playwright install

Running tasks

Tabata AI app

Note: This app is in progress. Many features are still missing. See apps/tabata-ai/README.md.

Task Command
Serve (dev) npx nx serve tabata-ai or npm run start:tabata-ai
Build npx nx build tabata-ai
Build (localized) npm run build-localize:tabata-ai
Unit tests npm run test:tabata
E2E tests npm run e2e:tabata-ai
Extract i18n npm run xi18n:tabata-ai

Notes app

Run both server and app (in separate terminals):

  1. Server: npm run server:notes-apphttp://localhost:9000
  2. App: npm run start:notes-apphttp://localhost:4200
Task Command
Unit tests npm run test:notes

Vehicles app

Task Command
Serve app npm run start:vehicles-app
Run server npm run server:vehicles-app
Unit tests npm run test:vehicles

Run any project's targets

List targets for a project:

npx nx show project tabata-ai

Run a target:

npx nx <target> <project>
# e.g. npx nx test auth

Testing

Projects are organized by scope using Nx tags (scope:tabata, scope:vehicles, scope:notes, scope:shared). Use the npm scripts to run tests by scope:

Command Description
npm run test Run all unit tests in the monorepo
npm run test:tabata Run tests for all tabata-related projects
npm run test:vehicles Run tests for all vehicles-related projects
npm run test:notes Run tests for all notes-related projects
npm run test:shared Run tests for shared libraries
npm run e2e:tabata-ai Run Playwright e2e tests for tabata-ai

Before running e2e tests, install Playwright browsers:

npx playwright install

Useful Nx commands

Command Description
npx nx graph Visualize project and task dependencies
npx nx list List installed Nx plugins
npx nx run-many -t test --projects=tag:scope:* Run tests for projects by tag
npx nx format:write Format code (see npm run format)

Add new projects

Use Nx generators instead of manual setup:

  • New Angular app: npx nx g @nx/angular:app my-app
  • New library: npx nx g @nx/angular:lib mylib

Use Nx Console in your IDE to browse plugins and generators.


Useful links

Releases

No releases published

Packages

 
 
 

Contributors