A personal engineering portfolio built with React + Vite, presented as an API reference rather than a conventional portfolio website.
The implementation is private. The engineering story is not.
Most of the work represented here has been delivered through private, NDA-bound, or internal engagements. This portfolio therefore focuses on the engineering shape of the work: responsibilities, architecture, technology, systems thinking, and career progression without exposing confidential implementation details.
The website intentionally uses an API/documentation-style interface:
GET /me
GET /projects
GET /packages
GET /principles
GET /changelog
GET /contact
Projects that can be publicly described return a 200 state.
Projects that are subject to NDA, client ownership, or restricted infrastructure return a 403 state.
The goal is not to simulate a real backend API. It is a visual and conceptual representation of how the portfolio is structured.
- React
- Vite
- TypeScript
- Static JSON data
- GitHub Pages
No backend service or database is required.
The portfolio is intentionally static and data-driven.
portfolio.json
β
βΌ
βββββββββββββββββββ
β React / Vite β
βββββββββββββββββββ
β
βββββββββββββββββΌββββββββββββββββ
βΌ βΌ βΌ
Profile Experience Open Source
β β β
βββββββββββββββββΌββββββββββββββββ
βΌ
Changelog
β
βΌ
Contact
The public content is maintained in a single source of truth:
src/
βββ data/
βββ portfolio.json
The UI consumes the JSON structure and renders the corresponding sections dynamically.
The portfolio contains relatively small amounts of structured public data, so splitting the content into multiple data sources would add complexity without providing meaningful benefits.
portfolio.json keeps the public identity of the site in one place:
portfolio
βββ meta
βββ profile
βββ experience
βββ packages
βββ principles
βββ hobbies
βββ quote
βββ changelog
βββ contact
This also makes content updates independent from most UI changes.
The repository is public by design.
Only information that is safe to disclose publicly should be included in the repository or generated website.
- Credentials
- API keys
- Tokens
- Internal URLs
- Private infrastructure details
- Database credentials or connection strings
- Confidential architecture documents
- Client-owned source code
- Internal service names that are not publicly attributable
- Sensitive business or customer data
For restricted engagements, the portfolio documents only publicly shareable information such as:
- Role
- General responsibilities
- Technology stack
- Architecture patterns
- Industry
- Engineering scope
- Non-confidential outcomes
A 403 project means the underlying work exists but its implementation cannot be publicly exposed.
This portfolio is intentionally different from a traditional:
Home
About
Skills
Projects
Experience
Contact
Instead, it treats an engineering career as a system.
Systems over screenshots
The portfolio emphasizes architecture, responsibilities, constraints, and engineering decisions rather than screenshots of private products.
Ownership over handoff
The goal is to communicate responsibility for systems, not merely participation in features.
Simplicity that scales
The implementation remains intentionally small even though the interface represents complex engineering work.
Documentation is part of delivery
The portfolio itself follows a documentation-oriented design because documentation is part of how production systems remain maintainable.
Private work can still demonstrate engineering ability
Confidentiality does not prevent describing the engineering problems, boundaries, technologies, and responsibilities involved.
Public packages and personal projects are treated as additional evidence of engineering practice.
The portfolio may include packages from the mrbontor ecosystem, such as:
@mrbontor/*
These provide publicly inspectable examples of coding style, API design, package design, and reusable engineering patterns.
Career progression is represented as software releases:
v5.x
v6.x
v7.x
v8.x
v9.x
v10.x
Each version represents a meaningful stage in professional growth rather than an arbitrary version number.
The changelog format intentionally reinforces the central idea of the portfolio:
A career is also a system that evolves.
The site is designed to be deployed as a static application.
Git repository
β
βΌ
Vite build
β
βΌ
Static assets
β
βΌ
GitHub Pages
No application server is required.
Install dependencies:
npm installRun the development server:
npm run devBuild for production:
npm run buildPreview the production build:
npm run preview.
βββ public/
βββ src/
β βββ components/
β βββ data/
β β βββ portfolio.json
β βββ pages/
β βββ styles/
β βββ App.tsx
β βββ main.tsx
βββ index.html
βββ package.json
βββ tsconfig.json
βββ vite.config.ts
βββ README.md
The exact structure may evolve as the UI develops.
This project intentionally follows a simple rule:
Static infrastructure.
Structured data.
Dynamic presentation.
Minimal operational complexity.
The website should feel like a living engineering system without requiring one.
mrbontor
Senior Software Engineer Distributed Systems Β· Microservices Β· API Architecture Β· Node.js Β· TypeScript