How fellias/satwa-lyar works
SATWA LYAR is a public fauna-learning site with an admin console, backed by an Express REST API. Visitors browse four fauna zones and animal details, save favorites, and take scored quizzes; admins manage fauna, categories, highlights, quizzes, users, and activity analytics. The API also supports guest identity, admin authentication, and request/activity logging. The README establishes the web/API split; dashed web-to-API links are architectural rather than verified call sites. Some unsampled controllers are represented from the tree and README, so their internal links are omitted.
Main entry points: app.ts Express application · logs.service.ts Activity and audit logs · animals.controller.ts Animal catalog · api.ts API client
Components 23
Web experience
- Next.js experience
apps/web/app - API client
apps/web/lib/api.ts - Fauna exploration
apps/web/components/PublicAnimalExplorer.tsx - Quiz experience
apps/web/app/kuis/page.tsx - Admin console
apps/web/app/admin
API entry and identity
- Express application
apps/api/src/app.ts - Guest and admin identity
apps/api/src/middleware/guest-context.middleware.ts - Admin authentication
apps/api/src/modules/auth/auth.controller.ts - User profile
apps/api/src/modules/users/users.profile.controller.ts
Fauna and learning
- Animal catalog
apps/api/src/modules/animals/animals.controller.ts - Fauna zones
apps/api/src/modules/categories/categories.controller.ts - Featured animals
apps/api/src/modules/highlights/highlights.controller.ts - Favorites
apps/api/src/modules/favorites/favorites.controller.ts - Quiz authoring
apps/api/src/modules/quiz/quiz.controller.ts - Quiz results
apps/api/src/modules/quiz/quiz.user.controller.ts
Administration and observability
- Admin statistics
apps/api/src/modules/dashboard/dashboard.controller.ts - Administrator management
apps/api/src/modules/users/users.controller.ts - Activity and audit logs
apps/api/src/modules/logs/logs.service.ts - Log reader
apps/api/src/modules/logs/logs.controller.ts
Other components
- Visitor or admin
- MariaDB
- Redis cache
apps/api/src/config/redis.ts - Cloudflare R2
apps/api/src/config/r2.ts
Connections 40
- Visitor or admin → Next.js experience: uses
README.md - Next.js experience → API client: requests data
- API client → Express application: calls REST API
- Express application → Guest and admin identity: installs middleware
apps/api/src/app.ts - Express application → Admin authentication: mounts routes
apps/api/src/app.ts - Express application → Animal catalog: mounts routes
apps/api/src/app.ts - Express application → Fauna zones: mounts routes
apps/api/src/app.ts - Express application → Favorites: mounts routes
apps/api/src/app.ts - Express application → Quiz results: mounts routes
apps/api/src/app.ts - Express application → Quiz authoring: mounts routes
apps/api/src/app.ts - Express application → User profile: mounts routes
apps/api/src/app.ts - Express application → Featured animals: mounts routes
apps/api/src/app.ts - Express application → Admin statistics: mounts routes
apps/api/src/app.ts - Express application → Administrator management: mounts routes
apps/api/src/app.ts - Express application → Log reader: mounts routes
apps/api/src/app.ts - Animal catalog → MariaDB: queries
apps/api/src/modules/animals/animals.controller.ts - Animal catalog → Cloudflare R2: stores images
apps/api/src/modules/animals/animals.controller.ts - Animal catalog → Redis cache: invalidates cache
apps/api/src/modules/animals/animals.controller.ts - Animal catalog → Activity and audit logs: records actions
apps/api/src/modules/animals/animals.controller.ts - Fauna zones → MariaDB: queries
apps/api/src/modules/categories/categories.controller.ts - Fauna zones → Redis cache: invalidates cache
apps/api/src/modules/categories/categories.controller.ts - Fauna zones → Activity and audit logs: records actions
apps/api/src/modules/categories/categories.controller.ts - Featured animals → MariaDB: queries
apps/api/src/modules/highlights/highlights.controller.ts - Featured animals → Redis cache: invalidates cache
apps/api/src/modules/highlights/highlights.controller.ts - Featured animals → Activity and audit logs: records actions
apps/api/src/modules/highlights/highlights.controller.ts - Favorites → MariaDB: reads and writes
apps/api/src/modules/favorites/favorites.controller.ts - Quiz authoring → MariaDB: queries
apps/api/src/modules/quiz/quiz.controller.ts - Quiz authoring → Activity and audit logs: records actions
apps/api/src/modules/quiz/quiz.controller.ts - Quiz results → MariaDB: queries
apps/api/src/modules/quiz/quiz.user.controller.ts - Quiz results → Activity and audit logs: records quiz events
apps/api/src/modules/quiz/quiz.user.controller.ts - Admin authentication → MariaDB: queries
apps/api/src/modules/auth/auth.controller.ts - Admin authentication → Activity and audit logs: records activity
apps/api/src/modules/auth/auth.controller.ts - Administrator management → MariaDB: queries
apps/api/src/modules/users/users.controller.ts - Administrator management → Activity and audit logs: records actions
apps/api/src/modules/users/users.controller.ts - Admin statistics → MariaDB: queries
apps/api/src/modules/dashboard/dashboard.controller.ts - Log reader → MariaDB: reads logs
apps/api/src/modules/logs/logs.controller.ts - Activity and audit logs → MariaDB: persists events
apps/api/src/modules/logs/logs.service.ts - Fauna exploration → API client: uses client
- Quiz experience → API client: uses client
- Admin console → API client: uses client