Education project

Cambridge School: REST, GraphQL and React

One data model served over REST and over GraphQL

A school's areas, offices, classrooms and staff in a Spring Boot API, with a GraphQL layer in FastAPI on top and a React frontend.

What it is about

Distributed and Parallel Programming asked for a web system for a school's buildings and staff. The model has areas, offices, classrooms and employees, and tells administrative staff apart from permanent and contract teachers.

The core is a REST API in Spring Boot. On top sits a FastAPI service with Strawberry that offers the same data as GraphQL, and a React frontend consumes the REST API.

What it does

  • A REST API in Spring Boot 3 with Java 21, JPA and H2: CRUD for areas, offices, classrooms and staff, and a report of staff per area.
  • Each employee belongs to an area and has an office; they can be administrative staff or teachers, and teachers are either permanent or contractors.
  • A GraphQL layer with FastAPI and Strawberry that calls the REST API with httpx and exposes queries and mutations over the same data.
  • A React 19 and Vite frontend with lists, forms and the report, connected to the API with Axios.
  • Built in a team of three, where 18 of the project's 22 commits are mine.

Decisions and their costs

  1. GraphQL as a layer on top, without touching the API

    If the GraphQL service read the database, the logic and validations would live in two places.

  2. In-memory H2

    The API had to start without installing anything for the demo.

Repositories

Every public repository of the project, with what it holds.

  • 2025

    PDYPEngineeringSebastian-s

    In distributed and parallel programming, a multiplayer bingo over TCP sockets with threads, a school system in Spring Boot with a GraphQL layer in FastAPI and React, and a Sudoku solved over RMI.

    Java, Spring Boot, Python, FastAPI, GraphQL, React
GitHub organization: EngineeringSebastian-s

Stack

Pick a technology to see the projects that use it.