Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Smart Movie Catalog / SmartMovieCatalog

Smart Movie Catalog is an early-stage movie catalog application with an ASP.NET Core backend and an Angular frontend.

Stack

  • Backend: ASP.NET Core 10 / C# in backend/src/SmartMovieCatalog.Api.
  • Frontend: Angular 21 / TypeScript in frontend.
  • SPA integration: ASP.NET Core SpaProxy.
  • Solution: SmartMovieCatalog.slnx.

Persistence, local JWT authentication, Clean Architecture layers, and Wolverine-based in-process CQRS are implemented and documented. Do not assume external messaging, refresh tokens, registration, password recovery, or AI-provider integration until those choices are implemented or documented through an architecture decision.

Repository Layout

.
├── AGENTS.md
├── CONTEXT.md
├── DESIGN.md
├── README.md
├── SmartMovieCatalog.slnx
├── docker-compose.yml
├── docker-compose.override.yml
├── eng/
│   ├── build/
│   ├── docs/
│   ├── scripts/
│   ├── docker/
│   └── .env.example
├── backend/
│   ├── src/
│   │   ├── SmartMovieCatalog.Api/
│   │   ├── SmartMovieCatalog.Application/
│   │   ├── SmartMovieCatalog.Contracts/
│   │   ├── SmartMovieCatalog.Domain/
│   │   └── SmartMovieCatalog.Infrastructure/
│   └── tests/
│       ├── SmartMovieCatalog.Api.Tests/
│       ├── SmartMovieCatalog.Application.Tests/
│       ├── SmartMovieCatalog.Domain.Tests/
│       └── SmartMovieCatalog.Infrastructure.Tests/
├── frontend/

Prerequisites

  • .NET SDK compatible with net10.0.
  • Node.js and npm compatible with the Angular project.
  • Installed frontend dependencies under frontend.
  • Docker Desktop or another Docker Engine compatible with Docker Compose.

Essential Commands

From the repository root:

dotnet run --project eng/build/_build.csproj -- Compile
dotnet run --project eng/build/_build.csproj -- Test
dotnet run --project eng/build/_build.csproj -- BuildFrontend

NUKE targets:

.\eng\build.ps1 Compile
.\eng\build.ps1 Test
.\eng\build.ps1 Coverage
.\eng\build.ps1 Mutation --MutationScope both
.\eng\build.ps1 Clean
.\eng\build.ps1 RunLocal

Legacy wrappers are available in eng/scripts/*.ps1.

Docker:

docker compose up --build

This starts:

  • ASP.NET Core API on http://localhost:5048.
  • PostgreSQL on localhost:5432.

The API container receives ConnectionStrings__DefaultConnection and JWT settings through environment variables. Set JWT_SIGNING_KEY in .env or your shell before starting the API; do not commit real signing keys or database credentials.

The backend auth endpoints are:

  • POST /api/auth/authenticate
  • GET /api/auth/me

The Angular home page is available at the SPA root (/). The Angular login screen is available at /login. It calls POST /api/auth/authenticate, then GET /api/auth/me, through same-origin /api routes. In local frontend development, frontend/src/proxy.conf.js proxies /api to the backend.

Health check:

curl http://localhost:5048/health

From frontend:

npm run build
npm test -- --watch=false
npm start

Local environment:

cp eng/.env.example .env

The example values are for local development only. Do not commit real secrets in .env.

Useful PostgreSQL checks:

docker compose exec postgres pg_isready -U smartmovie -d smart_movie_catalog
docker compose exec postgres psql -U smartmovie -d smart_movie_catalog -c "select version();"

Apply EF Core migrations after configuring the local connection string:

dotnet ef database update --project backend/src/SmartMovieCatalog.Infrastructure --startup-project backend/src/SmartMovieCatalog.Api

On API startup, non-test environments apply EF Core migrations and can seed an optional admin user by supplying non-versioned configuration:

  • ADMIN_SEED_EMAIL
  • ADMIN_SEED_PASSWORD
  • ADMIN_SEED_NAME

These .env keys are mapped by the local scripts and Docker Compose to AdminSeedUser:* configuration. Leave ADMIN_SEED_EMAIL and ADMIN_SEED_PASSWORD empty to disable the seed. Never commit real admin credentials.

Example local admin seed:

ADMIN_SEED_EMAIL=admin@example.com
ADMIN_SEED_PASSWORD=Password123!
ADMIN_SEED_NAME=Admin

The seed runs only during API startup. After changing .env, restart the API process or recreate the Docker Compose API container:

.\eng\scripts\run-local.ps1
docker compose up -d --force-recreate api

Development Notes

  • Backend entry point: backend/src/SmartMovieCatalog.Api/Program.cs.
  • Backend HTTP endpoints: Minimal API feature slices under backend/src/SmartMovieCatalog.Api/Features.
  • Auth endpoint mapping: backend/src/SmartMovieCatalog.Api/Features/Auth.
  • Frontend application: frontend/src/app.
  • Frontend auth module: frontend/src/app/auth.
  • Frontend visual system: frontend/DESIGN.md.
  • Root design policy: DESIGN.md.

Documentation

  • Architecture: eng/docs/ARCHITECTURE.md
  • Domain direction: eng/docs/DOMAIN.md
  • API conventions: eng/docs/API.md
  • Frontend conventions: eng/docs/FRONTEND.md
  • Testing policy: eng/docs/TESTING.md
  • Security rules: eng/docs/SECURITY.md
  • Engineering conventions: eng/docs/CONVENTIONS.md
  • Roadmap: eng/docs/ROADMAP.md
  • Architecture decisions: eng/docs/adr

Safety

  • Do not commit secrets, credentials, certificates, connection strings, or private keys.
  • Do not edit generated or vendor output such as node_modules, bin, obj, dist, .vs, or .angular/cache.
  • Keep backend and frontend contracts synchronized when changing API behavior.

About

Smart catalog with Hybrid Semantic Search and database segregation for brasilian movies

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages