// REST API & Web Application

CafeConnect.

A platform for remote workers to discover workspace cafes, powered by a fully documented RESTful API featuring JWT authentication and Role-Based Access Control.

CafeConnect running on three phones: cafe detail, home, and amenities with map

The Objective

Finding a reliable cafe to work from is a gamble; you need to know about WiFi speeds and power outlets before you arrive. I designed CafeConnect as a fully operational proof-of-concept. While the cafe listings themselves are sample data, the entire full-stack loop from secure JWT authentication to dynamic UI rendering is actively functioning. My primary objective was to use this sandbox to build a production-ready REST API from scratch using Python and Flask.

Security & RBAC

Because this project was a sandbox for testing backend security, I implemented a strict Role-Based Access Control (RBAC) system. While any authenticated user can submit a new cafe, destructive actions (like PUT updates and DELETE requests) are secured behind an Admin-only JWT layer, ensuring data integrity across the platform.

Technical Stack

Backend FrameworkPython / Flask
API ArchitectureFlask-RESTful
Database & ORMSQLite / SQLAlchemy
AuthenticationJWT / Flask-Login

Core API Endpoints

GET/api/cafesRequires Auth: Bearer Token
POST/api/cafesRequires Auth: Bearer Token
PUT/api/cafes/<id>Requires Auth: Admin Only
DELETE/api/cafes/<id>Requires Auth: Admin Only

Product Tour

cafe-connect.vercel.app
The CafeConnect landing page

Find

Search, city, WiFi rating, sockets and noise all narrow the same collection endpoint. Nearby adds a geo query that sorts by distance from the browser location.

cafe-connect.vercel.app
Browsing and filtering the cafe directory
// Browse & Filter
cafe-connect.vercel.app
Cafes sorted by distance from the current location
// Sorted by Distance

Decide

A single cafe resource: amenities, a live map and the ratings other people left. Reviews are the write path, posted straight back to the API.

cafe-connect.vercel.app
A single cafe detail view with amenities and location
// Cafe Detail
cafe-connect.vercel.app
Ratings and reviews with a leave-a-review form
// Ratings & Reviews

Contribute

Signing in issues a JWT. What comes back with it decides the rest: the admin session below carries an ADMIN badge, and Edit and Delete appear on listings that a signed-out visitor never sees.

cafe-connect.vercel.app
The sign-in screen
// Sign In · JWT
cafe-connect.vercel.app
The add-a-cafe form in an admin session
// Add a Cafe · Admin Only
Back to Portfolio

© 2026 Kobby S. Arthur. All rights reserved.