How lucassaymon1/foodexplorer-api works
Food-Explorer is a REST API for a restaurant menu frontend. The main workflow is authenticated menu browsing and, for administrators, creating, editing, deleting, and replacing food pictures; food records and tags are stored in SQLite, while uploaded pictures are served from disk. User registration and login provide the identity and token used by protected routes. The README documents the frontend/API relationship and database-backed menu workflow. TagsController and route aggregation are included from the tree, but their internal behavior was not sampled.
Main entry points: foods.routes.js Food routes · knex/index.js Knex database client · routes/index.js Route aggregator · ensureAuthenticated.js JWT authentication
Components 21
HTTP API
- Express server
src/server.js - Route aggregator
src/routes/index.js - Food routes
src/routes/foods.routes.js - User routes
src/routes/users.routes.js - Session routes
src/routes/sessions.routes.js - Tag routes
src/routes/tags.routes.js
Identity and Access
- User controller
src/controllers/UsersController.js - Session controller
src/controllers/SessionsController.js - JWT authentication
src/middlewares/ensureAuthenticated.js - Admin authorization
src/middlewares/ensureAdminUser.js - JWT configuration
src/configs/auth.js
Menu Management
- Food controller
src/controllers/FoodsController.js - Picture controller
src/controllers/FoodsPictureController.js - Tag controller
src/controllers/TagsController.js
Persistence and Files
- Upload configuration
src/configs/uploads.js - Disk storage
src/providers/DiskStorage.js - Knex database client
src/database/knex/index.js - SQLite initialization
src/database/sqlite/index.js - SQLite database
src/database/database.db
Other components
- Frontend client
- Upload filesystem
Connections 32
- Frontend client → Express server: sends requests
- Express server → Route aggregator: mounts routes
- Express server → SQLite initialization: initializes
- Express server → Upload configuration: serves files from
- Route aggregator → Food routes: mounts
- Route aggregator → User routes: mounts
- Route aggregator → Session routes: mounts
- Route aggregator → Tag routes: mounts
- Food routes → JWT authentication: guards routes
- Food routes → Admin authorization: guards writes
- Food routes → Food controller: dispatches
- Food routes → Picture controller: dispatches
- Food routes → Upload configuration: configures uploads
- User routes → JWT authentication: guards profile
- User routes → User controller: dispatches
- Session routes → JWT authentication: guards session check
- Session routes → Session controller: dispatches
- Tag routes → JWT authentication: guards routes
- Tag routes → Tag controller: dispatches
- Session controller → JWT configuration: reads JWT settings
- JWT authentication → JWT configuration: reads JWT settings
- User controller → Knex database client: queries users
- Session controller → Knex database client: queries users
- Food controller → Knex database client: queries foods and tags
- Picture controller → Knex database client: updates food records
- Tag controller → Knex database client: queries data
- SQLite initialization → SQLite database: initializes database
- Knex database client → SQLite database: reads and writes
- Food controller → Disk storage: manages pictures
- Picture controller → Disk storage: replaces pictures
- Disk storage → Upload configuration: uses paths
- Disk storage → Upload filesystem: moves and deletes files