01
Authentication & security
Built registration and login across FastAPI and React, implemented JWT access tokens and bcrypt password hashing, added validation, session-expiry logout and disposable-email-domain blocking.
Full-stack academic project · 2024–2025
A cargo shipping and port-operations management system connecting a React interface, FastAPI REST API and relational data model in one role-aware application.
Application gallery
The running application, captured from a local instance with its three seeded demonstration accounts: what a guest, an administrator, an employee and a client are each offered, the REST API underneath and the phone layout. Pick a set from the rail - each has its own strip, counter and full-size view. Every name, email address and phone number on screen is generated seed data.
What a guest is offered: the landing page, the JWT login, self-service registration and the validation on both forms.
Use the previous and next buttons, or the left and right arrow keys, to browse the screenshots. Home shows the first screenshot and End shows the last.
The FastAPI backend through its own Swagger UI: the endpoint catalogue, a typed contract, a live 401 and the Pydantic schemas.
Use the previous and next buttons, or the left and right arrow keys, to browse the screenshots. Home shows the first screenshot and End shows the last.
Every module, through the one role that sees them all: products, ships, operations, ports, orders and client accounts, with their detail pages and dialogs.
Use the previous and next buttons, or the left and right arrow keys, to browse the screenshots. Home shows the first screenshot and End shows the last.
The same application with the Clients module removed and order creation withheld - staff run operations, not accounts.
Use the previous and next buttons, or the left and right arrow keys, to browse the screenshots. Home shows the first screenshot and End shows the last.
The customer's side: a reduced menu, the catalogue without management actions, the cart through checkout, and only their own orders.
Use the previous and next buttons, or the left and right arrow keys, to browse the screenshots. Home shows the first screenshot and End shows the last.
The same React interface on a 390-pixel phone viewport: a single column and a collapsible menu that is still role-aware.
Use the previous and next buttons, or the left and right arrow keys, to browse the screenshots. Home shows the first screenshot and End shows the last.
Overview
The project was built from scratch rather than configured from an existing CMS. That made the work more demanding, but gave the team control over the data model, permissions and workflows needed for ships, ports, products, clients and orders.
The result is a full-stack application with a React client, REST API, account system and relational persistence. It demonstrates how interface behavior, domain relationships and security rules must work together-not as separate coursework exercises, but as one usable product.
My work
The academic report and Git history show contributions across backend, frontend, security, data modelling and team delivery.
01
Built registration and login across FastAPI and React, implemented JWT access tokens and bcrypt password hashing, added validation, session-expiry logout and disposable-email-domain blocking.
02
Introduced GUEST, CLIENT, EMPLOYEE and ADMIN roles; protected backend endpoints, frontend routes and actions; restricted client order access; and built administrative client management.
03
Created foundational Operation, Port and User functionality, developed CRUD workflows and relationships, built early React interfaces and connected them through a shared Axios API service.
04
Led a four-person project, coordinated delivery, integrated feature branches, resolved conflicts, reviewed merges, repaired CI and handled cross-module bug fixing before final delivery.
*The repository attributes 80 commits to my x0-lf and s19568 identities. Merged feature branches can duplicate commit history, so capabilities-not raw volume-are the main evidence presented here.
Application scope
The application models a small cargo marketplace and its connected port operations.
Technical architecture
JWT travels from the React client through the API, where role checks protect operations before SQLAlchemy accesses SQLite.
Routes, forms, role context, navigation and shared Axios API service.
REST routes, Pydantic validation, JWT verification and authorization utilities.
Domain models and relationships persisted in a seeded SQLite database.
Frontend
React 18, React Router, Axios, React Bootstrap, React Hook Form
Backend
Python, FastAPI, Pydantic, Uvicorn
Persistence
SQLAlchemy, SQLite
Security
JWT, bcrypt, role-based authorization
Delivery
Git, GitHub Actions, npm, pip
What I learned
Team context
Cont-Air-Near was a four-person academic project. I served as project lead and full-stack programmer. Fabian Zbrański worked on core setup, ships, orders, related records, filtering and cart integration; Maciej Chojecki worked on products, images, pagination, styling and the user panel; Michał Joński-Jastrzębowski worked on clients, cart, order history, QA and relationship fixes.
Shared ownership is part of the project’s value: the challenge was not only writing features, but coordinating independent work into a coherent application.
Repository structure
backend/
models/ Domain models
routes/ REST endpoints
utils/ Authorization and email tools
main.py FastAPI application
frontend/src/
components/ Domain and shared UI
contexts/ Role context
pages/ Routed pages
services/ Axios API client
.github/ CI workflowProject status
Delivered in January 2025 and cleaned up for portfolio use. The repository includes corrected Python 3.13 setup instructions and seeded local demo accounts for ADMIN, CLIENT and EMPLOYEE roles.
Ships, ports, products, operations, orders, order products, clients, cart and checkout-documented through FastAPI Swagger UI.
Demo credentials are for local use only. Production deployment would require new secrets, removed defaults, updated dependencies, broader automated tests and hardened deployment configuration.
Explore the code