Project · 2026
CEJUC — Academia de Artes Marciais
Institutional website for the CEJUC martial-arts gym (Canoas, Brazil) — classes, schedules, location maps and SEO, deployed on Azure.
An institutional website treated as an editorial piece — and maintained like real software: clean architecture, its own design system, and zero backend.

A full institutional website for the CEJUC martial-arts gym (Boxing, Judo, Jiu-Jitsu, Muay Thai, Physical Training and TP180), with an editorial identity and pages for classes, instructors, history, schedules and contact.
React SPA (React Router) with an MVC architecture (models/views/controllers), Leaflet maps for locations and partner schools, and structured SEO (schema.org, Open Graph, Google Analytics).
Deployed on Azure Static Web Apps with continuous delivery via GitHub Actions; an Azure Functions + Cosmos DB (MongoDB) backend is planned for schedules and dynamic content.
By the numbers
- 2003
- Founded
- 5
- Disciplines
- 10
- Pages
- 320px
- Mobile base
- 0
- Backend
Engineering decisions
- 01
Hook-based MVC architecture
Every screen is a Page → Controller → View trio, with data isolated in Models. Views are purely presentational and Controllers hold state and effects — a separation institutional sites rarely pursue, and one that keeps the code readable, predictable and testable.
- 02
Models as a versioned database
Schedules, the store catalog, SEO and navigation live as in-memory data with pure getters. Moving to an API means swapping the source in a single place — and the path (Azure Functions + Cosmos DB) is already documented in the repo.
- 03
Tokenized design system
A single source of truth in tokens: color, typography, spacing, shadow, motion and accessibility. No “magic numbers”. Mobile-first from 320px, 44px touch targets, visible focus and ARIA across the whole navigation.
- 04
Reuse without repetition
The five disciplines share a single base controller (carousel + WhatsApp link); each page is a three-line wrapper. Less surface to maintain and identical behavior guaranteed across them.
- 05
Product-grade performance and SEO
Lazy-loaded routes, source-map-free builds, images with loading/decoding/fetchpriority, per-route meta tags and JSON-LD structured data (SportsActivityLocation). A site Google truly understands.
- 06
Server-less conversion
The whole journey — enrollment, questions, store orders — ends in a WhatsApp message assembled by the site itself. Business value delivered with no infrastructure cost, with continuous deployment to Azure on every push.
Architecture
Page
Route shell
Lazy-loads, calls the controller and passes props.
Controller · hook
State & effects
Presentation logic. Never renders.
Model
Pure data
Constants + getters. Today’s “database”.
View
Presentation
Pure JSX, everything via props.
Responsive

Stack