
Welcome to BookMe
BookMe is a production-ready REST API for managing meeting room reservations at Hive Helsinki. Built with Go and PostgreSQL, it provides secure authentication, role-based access control, and seamless Google Calendar integration.Quickstart
Get up and running with BookMe in under 5 minutes
API Reference
Explore all available endpoints and request/response formats
Authentication
Learn about 42 Intra OAuth2 and JWT authentication
GitHub Repository
View the source code and contribute to the project
Key Features
42 Intra OAuth2 Authentication
Secure authentication using Hive Helsinki’s 42 Intranet. Users log in with their existing credentials, and the API handles token management automatically.Smart Booking Logic
The API prevents overlapping reservations and enforces business rules:- No double-booking of rooms
- Validation of reservation times within school hours
- Automatic conflict detection
Role-Based Access Control
Two distinct user roles with different permissions:Staff
- View who booked each time slot
- Cancel any reservation
- Sync bookings with Google Calendar
Student
- View room availability
- Create reservations
- Cancel only their own bookings
Email Notifications
Automatic email confirmations sent via SMTP for:- New reservations
- Cancellations
- Booking updates
Google Calendar Integration
Staff members can sync room reservations directly to Google Calendar, ensuring visibility across platforms.Available Rooms
BookMe manages two meeting rooms at Hive Helsinki:- Big Room (Room ID: 1) - For larger meetings and events
- Small Room (Room ID: 2) - For smaller team discussions
Tech Stack
Go 1.22+
Modern, performant backend language with excellent concurrency
PostgreSQL 14+
Robust relational database with SQLC for type-safe queries
Standard Library
Built with Go’s net/http - no external web frameworks required
BookMe uses SQLC to generate type-safe Go code from SQL queries, ensuring compile-time safety and eliminating common database errors.
Architecture Overview
BookMe follows a clean architecture pattern:API Base URL
The production API is available at:What’s Next?
Get Started
Follow the quickstart guide to make your first API call
Explore Endpoints
Learn how to create, retrieve, and cancel reservations
