an internal multi-tool platform that replaced legacy workflows across four departments.
built for compliance, marketing, support, and sales teams.
innova · internal
innova platform · modules
screenshot coming soon
mockup placeholder · will be replaced with real asset soon
/ the problem
four departments (compliance, marketing, support, sales), each running on scattered spreadsheets and manual processes. the first tool i built exposed the real question: how many more of these workflows are buried in the company, and how many people are being needlessly weighed down by them?
/ what i did
pitched a central hub to two colleagues. got the green light. designed the architecture as a monorepo: next.js 15 frontend with app router, fastapi backend with sqlalchemy orm, mssql database, redis caching layer, all orchestrated via docker compose behind nginx. every module follows the same pattern: model → schema → crud → endpoint → api service → hook → page. a 5-layer api abstraction on the frontend keeps things clean as modules grow. sole developer across the entire stack.
/ iii. technical deep-diveoptional · expand
/ architecture
monorepo with separate frontend/backend docker builds. nginx as reverse proxy unifies both under one domain. the backend follows a layered architecture: endpoints (routers) → crud layer → sqlalchemy models → pydantic schemas. since mssql via pyodbc doesn’t support native async, db calls run through asyncio.to_thread() to avoid blocking fastapi’s event loop. on the frontend, state lives in react context + custom hooks, no redux or zustand. each feature module gets its own hook that encapsulates api calls, loading states, and domain logic. the api layer itself is 5 tiers deep: page → hook → api service → axios instance → url registry. chose mssql over postgres for compatibility with existing company infrastructure. chose cookie-based jwt over bearer headers for xss protection and ssr compatibility. chose shadcn/ui over material ui for full control and lighter bundles.
/ infrastructure
/ learnings & what i’d change
being the sole dev on a platform used daily across four departments taught me a lot about scope discipline. every module follows the exact same pattern (model → schema → crud → endpoint → service → hook → page), which makes adding features predictable. handled multiple security incidents, compromised packages, attacks, forensics at 2am. learned more about linux internals from those nights than from any tutorial. the biggest lesson: when you own architecture, backend, frontend, and devops alone, the thing that saves you isn’t cleverness, it’s consistency.