How farizjr1/myportofolio works
Fariz Jelang Ramadhan is a public portfolio backed by an accounting-oriented CMS and ATS CV generator. Visitors browse profile and project content or send a contact message; an administrator signs in, edits CMS data, manages CV records, and generates downloadable PDFs. The frontend routes to public, authentication, and admin screens, whose documented API capabilities are served by Express route modules and persisted through MongoDB models. The README documents email and auto-seeding capabilities; sampled source confirms auth mail and CV listing behavior, but not every page-to-endpoint call.
Main entry points: index.ts API dispatch · admin Admin workspace · App.tsx Web app routing · models Domain models
Components 23
Portfolio frontend
- Web app routing
artifacts/myportofolio/src/App.tsx - Public pages
artifacts/myportofolio/src/pages - Account screens
artifacts/myportofolio/src/pages/auth - Admin workspace
artifacts/myportofolio/src/pages/admin - CV PDF generation
artifacts/myportofolio/src/pages/admin/CvGenerator.tsx - Token helper
artifacts/myportofolio/src/lib/auth.ts
API services
- Express application
artifacts/api-server/src/app.ts - API dispatch
artifacts/api-server/src/routes/index.ts - Authentication routes
artifacts/api-server/src/routes/auth.ts - Contact route
artifacts/api-server/src/routes/contact.ts - Profile routes
artifacts/api-server/src/routes/profile.ts - Portfolio routes
artifacts/api-server/src/routes/portfolio.ts - Content routes
artifacts/api-server/src/routes/content.ts - CV routes
artifacts/api-server/src/routes/cv.ts - JWT and RBAC
artifacts/api-server/src/middlewares/auth.ts - Email service
artifacts/api-server/src/lib/mailer.ts
Persistence
- Database connector
artifacts/api-server/src/lib/mongodb.ts - Seed templates
artifacts/api-server/src/lib/seed.ts - Domain models
artifacts/api-server/src/models
External services
- MongoDB
- Gmail SMTP
Other components
- Visitor
- Administrator
Connections 36
- Visitor → Web app routing: browses
- Administrator → Web app routing: manages
- Web app routing → Public pages: routes
- Web app routing → Account screens: routes
- Web app routing → Admin workspace: routes
- Account screens → Token helper: stores token
- Public pages → Express application: requests content
- Public pages → Contact route: submits message
- Account screens → Authentication routes: auth requests
- Admin workspace → Profile routes: edits profile
- Admin workspace → Portfolio routes: manages projects
- Admin workspace → Content routes: edits content
- Admin workspace → CV routes: manages CV data
- Admin workspace → CV PDF generation: opens generator
- CV PDF generation → CV routes: loads CV data
- Web app routing → Express application: API requests
- Express application → API dispatch: mounts routes
- API dispatch → Authentication routes: dispatches
- API dispatch → Contact route: dispatches
- API dispatch → Profile routes: dispatches
- API dispatch → Portfolio routes: dispatches
- API dispatch → Content routes: dispatches
- API dispatch → CV routes: dispatches
- Authentication routes → JWT and RBAC: issues tokens
- Authentication routes → Domain models: reads/writes users
- Profile routes → Domain models: reads/writes profile
- Portfolio routes → Domain models: reads/writes projects
- Content routes → Domain models: reads/writes content
- CV routes → Domain models: reads/writes CVs
- Contact route → Email service: sends notification
- Authentication routes → Email service: sends account email
- Email service → Gmail SMTP: delivers mail
- Express application → Database connector: connects on startup
- Database connector → MongoDB: connects
- Database connector → Seed templates: seeds empty store
- Database connector → Domain models: backs models