The Amigo Invisible frontend is an Angular 22 single-page application (SPA) that provides the complete user interface for organising Secret Santa draws. It covers two main flows: a group-creation form where organisers enter participant names, emails, and optional exclusions, and a review page where the organiser can inspect the final list and trigger the draw. The app communicates with the Node.js backend over HTTP via a single injectable service and requires no user registration.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/Sufianeh7/AmigoInvisible/llms.txt
Use this file to discover all available pages before exploring further.
Directory Structure
The source tree undersrc/app/ is kept intentionally small — two feature components, one service, and the top-level configuration files:
Key Dependencies
Angular 22
Core framework —
@angular/core, @angular/common, @angular/platform-browser, and @angular/compiler at ^22.0.0.@angular/forms
Provides
FormsModule and ngModel for two-way data binding on all form inputs inside the Grupo component.@angular/router
Enables client-side navigation between the group-creation page (
/) and the review page (/sorteo/:adminToken).RxJS ~7.8
Used by
GrupoService to return Observable streams from every HttpClient call.Tailwind CSS ^3.4 (dev)
Utility-first CSS framework applied directly in templates. Configured in
tailwind.config.js to scan all src/**/*.{html,ts} files.Vitest ^4.0 (dev)
Test runner invoked by
ng test. Listed alongside jsdom to provide a browser-like environment for unit tests.Development Setup
Clone the repository
Clone the Amigo Invisible repository and navigate to the Angular project directory.
Build
Run the production build to compile the app into thedist/ directory:
vercel.json at the project root rewrites all incoming paths to /index.html so that Angular’s client-side router handles navigation.
Testing
Unit tests are executed with Vitest through the Angular CLI test command:jsdom environment, so DOM-dependent Angular code can be tested without a real browser.