Skip to main content
BookMe Hero Light

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:
HTTP Request

Middleware (Rate Limiting, Auth)

Handler Layer (HTTP)

Service Layer (Business Logic)

Database Layer (SQLC Generated)

PostgreSQL

API Base URL

The production API is available at:
https://room.hive.fi/api/v1
For local development:
http://localhost:8080/api/v1

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
Join the Hive Helsinki community to discuss features, report issues, or contribute to BookMe’s development.

Build docs developers (and LLMs) love