How oktasatwika87/sikons works
SIKONS is a lecturer-consultation reservation system. Its main workflow is browsing lecturers and available slots, authenticating, then creating and managing bookings; lecturers configure availability, which is reconciled into slots. The Go API serves these workflows, while a Next.js frontend calls it. Separate runtime branches generate slots and poll/send booking reminders. The README is explicitly a skeleton, so several product capabilities are evident from the source index and router but their deeper implementation relationships are not shown in the excerpts.
Main entry points: api/main.go API process · server.go HTTP router · db.go Postgres connection · worker/main.go Reminder worker
Components 25
Web application
- App pages
web/app - UI components
web/components - Data hooks
web/hooks - API client
web/lib/api/client.ts - API errors
web/lib/api/errors.ts
HTTP API
- API process
cmd/api/main.go - HTTP router
internal/server/server.go - Auth handlers
internal/server/auth_handlers.go - Availability handlers
internal/server/availability_handlers.go - Booking handlers
internal/server/booking_handlers.go - Lecturer handlers
internal/server/lecturer_handlers.go
Reservation domain
- Authentication
internal/auth/service.go - Availability rules
internal/availability/service.go - Booking lifecycle
internal/booking/service.go - Lecturer profiles
internal/lecturer/service.go - Slot reconciliation
internal/slotgen/service.go
Background services
- Slot generator command
cmd/generate-slots/main.go - Reminder worker
cmd/worker/main.go - Reminder polling
internal/reminder/reminder.go - Email sender
internal/notifier/notifier.go
Runtime infrastructure
- Postgres connection
internal/db/db.go - Runtime config
internal/config/config.go
Other components
- Student or lecturer
- Postgres
- Resend email service
Connections 28
- Student or lecturer → App pages: uses
- App pages → UI components: renders
- Data hooks → API client: requests
- API client → API errors: raises
web/lib/api/client.ts - API client → HTTP router: calls API
- API process → Runtime config: loads
cmd/api/main.go - API process → Postgres connection: connects
cmd/api/main.go - API process → HTTP router: starts
cmd/api/main.go - HTTP router → Auth handlers: routes
internal/server/server.go - HTTP router → Availability handlers: routes
internal/server/server.go - HTTP router → Booking handlers: routes
internal/server/server.go - HTTP router → Lecturer handlers: routes
internal/server/server.go - Auth handlers → Authentication: calls
internal/server/auth_handlers.go - Availability handlers → Availability rules: calls
internal/server/availability_handlers.go - Availability handlers → Slot reconciliation: reconciles
internal/server/availability_handlers.go - Booking handlers → Booking lifecycle: calls
internal/server/booking_handlers.go - API process → Availability rules: wires
cmd/api/main.go - API process → Booking lifecycle: wires
cmd/api/main.go - API process → Slot reconciliation: wires
cmd/api/main.go - API process → Lecturer profiles: wires
cmd/api/main.go - Slot generator command → Slot reconciliation: reconciles
cmd/generate-slots/main.go - Slot generator command → Postgres connection: connects
cmd/generate-slots/main.go - Reminder worker → Runtime config: loads
cmd/worker/main.go - Reminder worker → Postgres connection: connects
cmd/worker/main.go - Reminder worker → Reminder polling: runs
cmd/worker/main.go - Reminder polling → Email sender: sends email
internal/reminder/reminder.go - Email sender → Resend email service: delivers
- Postgres connection → Postgres: connects