How oryzon/orysaas works
OrySaaS is a multi-tenant SaaS starter with a Nuxt frontend and Express/TypeORM API. The principal flow is a user operating the portal: frontend pages and composables call API controllers, which enforce authentication/tenant rules and persist domain records. Major capabilities also include CMS, billing and quota management, notifications, scheduled jobs, uploads, and email. Edges are limited to README-documented or indexed/source-visible relationships; many individual controllers and frontend call sites were not sampled.
Main entry points: app.ts API bootstrap · datasource.ts MariaDB connection · auth.controller.ts Authentication · user.controller.ts User profile
Components 30
Web frontend
- Portal pages
webapp/app/pages/portal - Public pages
webapp/app/pages - API client
webapp/app/composables/useApi.ts - Authentication UI
webapp/app/composables/useAuth.ts
API runtime
- API bootstrap
core/app.ts - Controller routing
core/controllers/controller.ts - Route & access decorators
core/decorators/index.ts
SaaS capabilities
- Authentication
core/controllers/api/auth/auth.controller.ts - User profile
core/controllers/api/user/user.controller.ts - Organizations
core/databases/repositories/organization.repository.ts - Membership & roles
core/databases/repositories/organization-member.repository.ts - CMS pages & blocks
core/controllers/api/pages/page.controller.ts - Plans & billing
core/helpers/stripe.helper.ts - Quota enforcement
core/decorators/check-quota.ts - Notifications
core/services/notification.service.ts - Scheduled jobs
core/jobs/runner.ts - Logo uploads
core/services/organization-logo.service.ts - Transactional email
core/services/mail.service.ts - Stripe webhook
core/webhooks/stripe.webhook.ts - SSE stream
core/services/sse.service.ts
Persistence
- MariaDB connection
core/config/datasource.ts - User records
core/databases/repositories/user.repository.ts - Token records
core/databases/repositories/token.repository.ts - Organization records
core/databases/repositories/organization.repository.ts - Membership records
core/databases/repositories/organization-member.repository.ts - Plan records
core/databases/repositories/plan.repository.ts - Notification records
core/databases/repositories/notification.repository.ts
Other components
- SaaS user
- SMTP service
- Stripe
Connections 36
- SaaS user → Portal pages: uses
README.md - SaaS user → Public pages: visits
README.md - Portal pages → API client: requests API
README.md - Public pages → API client: requests API
README.md - Authentication UI → API client: uses
- API client → API bootstrap: calls API
README.md - API bootstrap → MariaDB connection: initializes
core/app.ts - API bootstrap → Controller routing: loads routes
core/app.ts - API bootstrap → Scheduled jobs: starts
core/app.ts - API bootstrap → Stripe webhook: registers
core/app.ts - Controller routing → Authentication: routes to
- Authentication → Route & access decorators: uses
core/controllers/api/auth/auth.controller.ts - Authentication → User records: reads/writes
core/controllers/api/auth/auth.controller.ts - Authentication → Token records: reads/writes
core/controllers/api/auth/auth.controller.ts - Authentication → Transactional email: sends email
core/controllers/api/auth/auth.controller.ts - User profile → User records: reads/writes
core/controllers/api/user/user.controller.ts - User profile → Membership records: checks/updates
core/controllers/api/user/user.controller.ts - User profile → Organization records: updates
core/controllers/api/user/user.controller.ts - User profile → Plans & billing: cancels subscription
core/controllers/api/user/user.controller.ts - Plans & billing → Plan records: reads plans
core/helpers/stripe.helper.ts - Stripe webhook → Plans & billing: syncs billing
core/webhooks/stripe.webhook.ts - Stripe webhook → Stripe: verifies events
core/webhooks/stripe.webhook.ts - Membership & roles → Organization records: queries organizations
core/databases/repositories/organization-member.repository.ts - API bootstrap → CMS pages & blocks: routes via controllers
- CMS pages & blocks → MariaDB connection: persists content
- API bootstrap → Quota enforcement: registers enforcement
- Notifications → Notification records: persists
core/services/notification.service.ts - Notifications → SSE stream: publishes events
core/services/notification.service.ts - Scheduled jobs → MariaDB connection: loads job state
core/jobs/runner.ts - Logo uploads → API bootstrap: serves uploaded files
- Transactional email → SMTP service: sends through
core/services/mail.service.ts - MariaDB connection → User records: backs
core/databases/repositories/user.repository.ts - MariaDB connection → Token records: backs
core/databases/repositories/token.repository.ts - MariaDB connection → Organization records: backs
core/databases/repositories/organization.repository.ts - MariaDB connection → Membership records: backs
core/databases/repositories/organization-member.repository.ts - MariaDB connection → Plan records: backs
core/databases/repositories/plan.repository.ts