Fix BASE_URL config loading, add tasks/projects; robust .env path resolution

- Config: try ENV_FILE, .env, ../.env for loading; trim trailing slash from BaseURL
- Log BASE_URL at server startup for verification
- .env.example: document BASE_URL
- Tasks, projects, tags, migrations and related API/handlers

Made-with: Cursor
This commit is contained in:
Michilis
2026-03-09 18:57:51 +00:00
parent 75105b8b46
commit bd24545b7b
61 changed files with 6595 additions and 90 deletions

View File

@@ -25,6 +25,7 @@ import (
func main() {
cfg := config.Load()
log.Printf("BASE_URL=%s", cfg.BaseURL)
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
@@ -86,19 +87,36 @@ func main() {
reminderSvc := service.NewReminderService(queries, calSvc, sched)
attendeeSvc := service.NewAttendeeService(queries, calSvc)
taskWebhookSvc := service.NewTaskWebhookService(queries)
taskSvc := service.NewTaskService(queries, auditSvc, taskWebhookSvc)
projectSvc := service.NewProjectService(queries, auditSvc)
tagSvc := service.NewTagService(queries)
taskDepSvc := service.NewTaskDependencyService(queries)
var taskReminderScheduler service.TaskReminderScheduler = scheduler.NoopScheduler{}
if realSched, ok := sched.(*scheduler.Scheduler); ok {
taskReminderScheduler = realSched
}
taskReminderSvc := service.NewTaskReminderService(queries, taskReminderScheduler)
h := api.Handlers{
Auth: handlers.NewAuthHandler(authSvc, userSvc),
User: handlers.NewUserHandler(userSvc),
Calendar: handlers.NewCalendarHandler(calSvc),
Sharing: handlers.NewSharingHandler(calSvc),
Event: handlers.NewEventHandler(eventSvc),
Reminder: handlers.NewReminderHandler(reminderSvc),
Attendee: handlers.NewAttendeeHandler(attendeeSvc),
Contact: handlers.NewContactHandler(contactSvc),
Availability: handlers.NewAvailabilityHandler(availSvc),
Booking: handlers.NewBookingHandler(bookingSvc),
APIKey: handlers.NewAPIKeyHandler(apiKeySvc),
ICS: handlers.NewICSHandler(calSvc, eventSvc, queries),
Auth: handlers.NewAuthHandler(authSvc, userSvc),
User: handlers.NewUserHandler(userSvc),
Calendar: handlers.NewCalendarHandler(calSvc),
Sharing: handlers.NewSharingHandler(calSvc),
Event: handlers.NewEventHandler(eventSvc),
Reminder: handlers.NewReminderHandler(reminderSvc),
Attendee: handlers.NewAttendeeHandler(attendeeSvc),
Contact: handlers.NewContactHandler(contactSvc),
Availability: handlers.NewAvailabilityHandler(availSvc),
Booking: handlers.NewBookingHandler(bookingSvc),
APIKey: handlers.NewAPIKeyHandler(apiKeySvc),
ICS: handlers.NewICSHandler(calSvc, eventSvc, queries),
Task: handlers.NewTaskHandler(taskSvc),
Project: handlers.NewProjectHandler(projectSvc),
Tag: handlers.NewTagHandler(tagSvc),
TaskDependency: handlers.NewTaskDependencyHandler(taskDepSvc),
TaskReminder: handlers.NewTaskReminderHandler(taskReminderSvc),
TaskWebhook: handlers.NewTaskWebhookHandler(taskWebhookSvc),
}
authMW := middleware.NewAuthMiddleware(jwtManager, queries)