How irunga1/flgtbkend works
FreelanceGT is an Express API for a Guatemala-focused freelance marketplace. A client request enters through the server’s mounted routes; domain handlers validate and sanitize input, use JWT protection where enabled, access SQLite, and return JSON. The API covers account access and user management, roles and skills, project discovery and applications, freelancer-project relationships, profiles, and messaging. The excerpts and source index support the main route-to-database and middleware links; some route implementations were not sampled, so their internal behavior is not expanded here.
Main entry points: server.js Express server · db.js SQLite database · profile.js Profile management · authJwt.js JWT middleware
Components 18
API entry
- Express server
server.js
Identity and accounts
- Login
routes/login.js - User management
routes/user.js - Role management
routes/roles.js - Profile management
routes/profile.js
Marketplace domains
- Project listings
routes/proyectos.js - Project applications
routes/aplicar.js - Freelancer projects
routes/freelancer_proyectos.js - Skills catalog
routes/skills.js - User skills
routes/usuario_skills.js - Messaging
routes/messages.js
Shared services
- JWT middleware
middlewares/authJwt.js - Data validation
libs/datavalidator.js - Input sanitization
libs/utilery.js - Password encoding
libs/cripter.js - SQLite database
db.js
Other components
- API client
- Mail relay
Connections 37
- API client → Express server: sends requests
README.md - Express server → User management: mounts /users
server.js - Express server → Role management: mounts /roles
server.js - Express server → Skills catalog: mounts /skills
server.js - Express server → Project listings: mounts /proyectos
server.js - Express server → Freelancer projects: mounts route
server.js - Express server → User skills: mounts route
server.js - Express server → Profile management: mounts /perfil
server.js - Express server → Project applications: mounts /aplicar
server.js - Express server → Login: mounts /login
server.js - Express server → Messaging: mounts /messages
server.js - Login → SQLite database: queries
routes/login.js - Login → Password encoding: encodes password
routes/login.js - User management → SQLite database: reads and writes
routes/user.js - User management → Password encoding: encodes password
routes/user.js - User management → Mail relay: sends verification mail
routes/user.js - Role management → SQLite database: queries
routes/roles.js - Profile management → SQLite database: reads and updates
routes/profile.js - Profile management → Password encoding: encodes password
routes/profile.js - Project listings → SQLite database: queries
routes/proyectos.js - Project applications → SQLite database: queries
routes/aplicar.js - Freelancer projects → SQLite database: queries
routes/freelancer_proyectos.js - Skills catalog → SQLite database: queries
routes/skills.js - User skills → SQLite database: queries
routes/usuario_skills.js - Messaging → SQLite database: stores messages
routes/messages.js - User management → JWT middleware: uses JWT guard
routes/user.js - Project listings → JWT middleware: uses JWT guard
routes/proyectos.js - Profile management → JWT middleware: uses JWT guard
routes/profile.js - Project applications → JWT middleware: uses JWT guard
routes/aplicar.js - Freelancer projects → JWT middleware: uses JWT guard
routes/freelancer_proyectos.js - User skills → JWT middleware: uses JWT guard
routes/usuario_skills.js - Messaging → Input sanitization: sanitizes input
routes/messages.js - Messaging → Data validation: validates input
routes/messages.js - Project listings → Input sanitization: sanitizes input
routes/proyectos.js - Project listings → Data validation: validates input
routes/proyectos.js - Profile management → Input sanitization: sanitizes input
routes/profile.js - Profile management → Data validation: validates input
routes/profile.js