icandev.ir — This Site
This portfolio: a fully static Next.js site with no backend, typed content files, and a Docker image deployed to a VPS through Coolify.
Overview
Rebuilt from an unfinished React + Vite prototype. Every page is prerendered at build time, there is no database and no API, and all content lives in typed modules under src/content.
The problem
The previous version had a subtle failure that is worth naming: the project cards accepted a prop and then ignored it, rendering the same project four times. Nothing crashed, nothing warned — the site just quietly lied. The rebuild is organised so that class of bug is structurally hard to reintroduce.
Approach
- Content is data, not markup. Every string lives in a typed record under src/content, and components render what they are given.
- One project per file, collected in a single array. Deleting a project is removing one line — the list page, homepage, sitemap and static route generation all read from that array, so nothing is left pointing at a page that no longer exists.
- No backend at all. No API routes, no database, no server actions; the contact page uses mailto: and tel: links, so there is nothing to keep running or to secure.
- SCSS Modules over a utility framework, with colour and spacing centralised as CSS custom properties instead of hex literals repeated across stylesheets.
- Shipped as a standalone Docker image so the VPS deployment is the same artefact that was built and tested locally.
What shipped
- Fully static — every route prerendered at build time.
- Adding or removing a project touches one file.
- Multi-stage Docker build on Next.js standalone output.
Outcome
A site that is quick to update and effectively free to run, with the content model doing the work that used to be done by remembering things.
More work

EnterpriseEnterprise Super App — Sale Service
Iran Fava Gostaresh
High-traffic vehicle sales app covering direct-sale, lottery and flash-sale workflows, shipped as an installable PWA — rebuilt around measurement, cutting the first visit by 69% and taking Lighthouse accessibility to 100.
- React
- Vite
- Zustand
- SCSS
- +6
- Enterprise
Global Corporate CMS
Iran Fava Gostaresh
A modular content platform with 14 administrative modules — page builder, component builder, file manager, navigation management and role-based access control — that lets non-technical teams run corporate sites without a deployment.
- React
- TypeScript
- Zustand
- REST APIs
- +3