Skip to content

About

Agentic full-stack portfolio & open-source engineering chronicle: Vanilla ESM, FastAPI, OpenRouter (grok-4.3), WebMCP tools, Apple HIG glassmorphism, and 100/100 Lighthouse CI

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

1 watching

Forks

Latest commit

 

History

2,234 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mangesh Raut · Portfolio

Software engineering, thoughtful design, and AI that can act.

An open-source portfolio built with native web standards, an Apple-inspired interface, and an agentic assistant. Explore the work, inspect the systems, or run the entire project locally.

Explore the portfolio · Projects · Writing · Documentation

Pages CI Node 22 to 26 Python 3.12 or newer MIT license

Real portfolio homepage screenshot in light mode Real portfolio homepage screenshot in dark mode
Light. Clear and spacious.Dark. Focused and precise.

Existing screenshots of the actual website. Live counters, music, and navigation can change.


Experience · Architecture · Run locally · Quality · Contributing · Documentation · Contact

1. The experience

This repository is the source for Mangesh Raut’s public portfolio: professional background, projects, engineering case studies, publications, and writing, alongside the services that power AssistMe and the site’s integrations.

Surface What you can explore
Portfolio Background, skills, experience, education, projects, publications, awards, recommendations, certifications, résumé, and contact
Projects GitHub repository cards, real README screenshots, repository facts, filters, and detailed previews
Systems Architecture, engineering workflows, case studies, and technical decisions
Monitor Service health, operational telemetry, and runtime diagnostics
Writing 18 articles across January–September 2026, with two articles per month, source references, and credited media
Travel Interactive travel atlas, route views, location stories, and a globe loaded on request
Uses Development tools, hardware, AI workflow, and the stack behind the site
Changelog Releases, fixes, model attribution, and verified commit links

AssistMe: an assistant inside the portfolio

AssistMe connects conversation to the website. It supports streaming responses, Markdown, syntax-highlighted code, mathematical notation, attachments, voice interfaces, conversation memory, and browser-side WebMCP actions for navigating and retrieving portfolio information.

  • Grounded answers: portfolio context is assembled from repository data and site knowledge.
  • Tools: browser actions are implemented in agentic-actions.js.
  • Model routing: provider selection is configured in the backend and Worker; the FastAPI router uses the configured OpenRouter primary model. The live Worker routes by task and input capability, using Nemotron Ultra for reasoning, Nemotron Lightning for quick turns, North Mini Code for code, and compatible Gemma/Omni models for media. Catalog capabilities refresh hourly.
  • Offline development: the local FastAPI backend provides canned portfolio answers when OPENROUTER_API_KEY is absent. Real model responses require provider credentials.

Model availability and integration behavior depend on runtime configuration. See the API guide for routes, environments, and differences between deployments.

Project and editorial integrity

Repository cards use GitHub metadata and available README screenshots. Repositories without a suitable screenshot can show a clearly labeled conceptual illustration. Coverage counts are dated snapshots, documented in the repository screenshot audit and asset manifest.

Blog media is traced to original publishers where available, with visible credits and a documented conceptual fallback. The media audit and source manifest record provenance and verification.

Contact, world clocks, and calendar

Direct Outreach includes live analog clocks for New York, London, Mumbai, Tokyo, Sydney, and Paris, using IANA timezones with daylight-saving handling. Three clocks are shown initially, with the other three available through View more. Calendar events show five compact cards by default and expand into a bounded scrolling panel; personal reminders can be reviewed, saved in the browser, and exported as one-time calendar copies.

Today’s Panchang is sourced from Kalnirnay. A scheduled workflow checks the official publication hourly, using a dated cache key to avoid yesterday’s cached response. The frontend checks the snapshot every 15 minutes while visible and displays only values dated today in India. If fresh values are unavailable, it hides stale data and links to the official calendar.

Source limitation: the October 2 local fetch returned verified current values, but Kalnirnay returned HTTP 403 to GitHub’s hosted runner. The scheduled workflow reports that refusal as a warning; a successful workflow does not guarantee fresh data. Automatic daily ingestion remains dependent on the publisher permitting the runner’s requests. See the contact calendar implementation notes.

Design and accessibility

The interface follows an Apple-inspired visual language: system typography, restrained spacing, blue primary actions, solid white neutral surfaces in light mode, and solid black neutral surfaces in dark mode. Borders define cards and grouped controls; category and brand icons retain their colors. Shared design rules include visible keyboard focus, circular red close controls, reduced-motion support, accessible contrast, and layouts without horizontal overflow.

The design system defines the tokens and component behavior. This is an independent portfolio; it is not an Apple product or an Apple-affiliated project.

2. How it works

flowchart TD
    Visitor[Browser · HTML / CSS / JavaScript]
    Pages[GitHub Pages · static portfolio]
    Worker[Cloudflare Worker · active edge API]
    Local[FastAPI · local and optional Vercel backend]
    Models[OpenRouter · configured model providers]
    Services[GitHub / media / calendar integrations]
    Build[esbuild + asset generators]
    CI[GitHub Actions · checks and deployment]
    Visitor --> Pages
    Visitor --> Worker
    Visitor --> Local
    Worker --> Models
    Local --> Models
    Worker --> Services
    Local --> Services
    Build --> CI
    CI --> Pages
Loading

GitHub Pages serves the production frontend. The active Cloudflare Worker provides edge API services. FastAPI powers local development and the optional Vercel deployment path. Static hosting does not execute Python; API requests use the configured service endpoint.

Layer Implementation Source
Interface Semantic HTML, vanilla CSS, native JavaScript ES modules src/
Styling CSS custom properties, system font stacks, Tailwind v4 build output src/assets/css/
Build esbuild, generated blog pages, metadata, icons, and optimized assets scripts/build/
Edge services Cloudflare Worker workers/assistme-chat/
Python services FastAPI, route modules, model routing, and integrations api/
Rich responses Marked, DOMPurify, syntax highlighting, and KaTeX package.json
Verification pytest, Playwright, accessibility checks, and Lighthouse tests/
Delivery GitHub Actions, Pages, and separate Worker deployment .github/workflows/

The frontend has no React, Angular, Vue, or Svelte runtime. Tailwind is used during the build; component styling lives in vanilla CSS rather than utility classes in HTML.

Repository map
src/                     Frontend pages, ES modules, styles, media, and public data
api/                     FastAPI application, routes, model router, and integrations
workers/assistme-chat/   Cloudflare edge API
scripts/                 Build, development, QA, security, and deployment tooling
tests/api/               Python API tests
tests/e2e/               Browser user journeys and broader regression coverage
docs/                    Design, architecture, API guides, and audit evidence
.github/workflows/       CI, publication, monitoring, and data synchronization
dist/                    Generated production output; ignored by Git

See STRUCTURE.md for the complete directory guide.

3. Run locally

Prerequisites: Git, Node.js >=22 <27 (Node 22 recommended), Python 3.12+, and uv. The repository’s .nvmrc selects Node 22.

git clone https://github.com/mangeshraut712/mangeshrautarchive.git
cd mangeshrautarchive

npm ci
uv venv --python 3.12 venv
uv pip install --python venv/bin/python -r requirements.txt -r requirements-dev.txt
npx playwright install chromium

npm run doctor:strict
npm run dev
Local service Address
Portfolio http://127.0.0.1:4000
API health http://127.0.0.1:8001/api/health
Interactive API documentation http://127.0.0.1:8001/api/docs

Use venv as the environment directory: the development backend detects its Python interpreter. Stop the development server with Ctrl+C. To run the configured Desktop Chrome tests, install Google Chrome; the Playwright configuration explicitly selects its chrome channel.

Configuration and integrations

A local demo does not require API credentials. For real services, copy .env.example to an ignored local environment file and fill only the integrations you intend to use.

  • OPENROUTER_API_KEY enables real model responses in FastAPI.
  • OPENROUTER_MODEL optionally selects the backend model.
  • GitHub, music, health, and calendar services have their own configuration requirements.
  • Google Calendar booking and the local Apple/Outlook .ics fallback have different behavior; consult the API guide before configuring them.

Never commit environment files, credentials, or private calendar data. Browser fallback reminders and exported calendar files do not grant access to an Apple account.

4. Engineering and verification

Command Purpose
npm run dev Start frontend and FastAPI development services
npm run dev:frontend Run the frontend with the local API proxy
npm run dev:backend Run FastAPI independently
npm run doctor:strict Validate repository layout and stack constraints
npm run check ESLint, Stylelint, anti-slop checks, and formatting
npm test Run API tests, worker tests, and critical Playwright journeys
npm run test:worker Run Cloudflare Worker multimodal routing and stream boundary tests
npm run test:tester-army Run 23 deterministic Tester Army journeys across Chromium and WebKit (46 tests)
npm run test:tester-army:ci Run 23 deterministic Tester Army journeys on desktop Chromium for CI
npm run test:e2e:all Run the broader Playwright suite across 16 configured browser projects
npm run security-check Scan source files for exposed secrets and credentials
npm run build Generate production output in dist/
npm run qa:surfaces Smoke-check configured deployment surfaces
npm run qa:postdeploy Check configured host availability and commit parity

Evidence, not permanent guarantees

The October 3, 2026 release passed 185 API tests, 10 Worker routing/stream boundary tests, 14 critical Chrome journeys, and 23 Tester Army journeys (46 browser checks across desktop Chromium and mobile WebKit). ESLint, Stylelint, formatting, the secret scan, and the production build passed locally. The matching deployment workflow passed its quality, Lighthouse (100/100/100/100), Pages publication, and deployment verification gates. These are dated results for that release, not guarantees about every browser or future deployment.

Responsive review covered Home, Systems, Travel, Monitor, Uses, and Changelog at desktop and phone widths in both themes, with no horizontal overflow in the reviewed states. The deployed contact card was checked for current Panchang values and category icon colors. Share-card alignment and AssistMe’s composer and viewport bounds were also reviewed. This does not claim the broader 16-project browser suite passed. The October 1 site audit preserves earlier review scope.

Release path

  1. Run the required local gates: npm run check, npm test, npm run security-check, and npm run build.
  2. Commit reviewed changes with a conventional commit message and update release attribution.
  3. Push main; verify the matching GitHub Actions runs and Pages publication finish successfully.
  4. Check the deployed routes and asset version. A passing local build alone does not prove deployment.

GitHub Pages is the primary public host. Vercel is an optional deployment path; its live availability must be checked separately. Worker changes follow their dedicated deployment workflow.

5. Maintenance and contribution

Read CONTRIBUTING.md, AGENTS.md, and the relevant design or architecture guide before making changes. Keep fixes focused, preserve the native web stack, and add realistic browser coverage when user behavior changes. Use the four local release gates above before submitting.

Tester Army browser journeys

Run npm run test:tester-army with Node 22.12+ after npx playwright install chromium webkit. The pinned e2e@0.16.0 and @e2e-dev/web@0.11.2 suite runs 23 journeys on desktop Chromium and mobile WebKit without a model or API key. The runner starts the frontend on a free port and cleans up its own process. Use E2E_APP_URL for an existing local server. See the coverage manifest for assertions and external-service limits. The JavaScript config is selected explicitly because upstream automatic discovery uses TypeScript filenames.

5.1 Coding agents and provenance

Tester Army contribution: GPT-6.1 Sol / Codex; purpose: deterministic browser journeys and coverage boundaries. Reasoning mode and token usage: unavailable. Independent verification uses GPT-6 Luna / Codex.

Mangesh Raut maintains this portfolio with contributions from Codex, Claude Code, Google Antigravity, Cursor, and GitHub Copilot. Shipped changes record the exposed agent/model family, engineering purpose, and verified commit in the changelog.

Current contribution Attribution
Coding agent Gemini 3.8 Flash, in Google Antigravity IDE
Purpose Resolve all 6 GitHub CodeQL Security and Quality code scanning alerts, redesign AssistMe Privacy & Settings as an in-widget Apple HIG view with grouped inset cards, in-widget navigation, and responsive touch controls, fix contact page desktop card alignment and column balance, Hero Music Card live listening integration, and WebMCP agentic actions suite upgrade
Exact model variant, reasoning mode, token usage unavailable
Portfolio chatbot model Configured separately in api/model_router.py and Worker configuration; each live response reports the actual serving model

AssistMe verification — October 3, 2026: GPT-6 / Codex in Codex desktop; purpose: live multimodal verification, accurate model labels, billing provenance, and responsive chatbot reliability. Exact variant, reasoning mode, and token usage: unavailable.

AssistMe on GitHub Pages uses the Cloudflare Worker at https://assistme-chat.mangeshraut712.workers.dev. The frontend checks /api/chat/health and sends chat requests to /api/chat on that host. An unavailable AI provider falls back to explicitly labeled local answers. Interrupted streams discard the failed attempt before trying another model; provider token usage is retained when supplied, and estimates remain labeled. The chat window uses the available area below navigation, with a scrolling transcript and a reachable composer. The deployed-host browser regression covers routing, fallback resets, and final-frame metadata in Chrome and Safari. It is included in the 14-journey critical Chrome release gate; Safari is also checked separately when changing this path.

Coding attribution in historical entries is contributor-reported in commit messages. A verified commit link confirms the repository reference; it does not authenticate the actual model runtime. Missing model, tool, reasoning, or token records are not inferred. See the changelog attribution audit.

Previous contributor records are preserved in Development history, with dated context for superseded implementations.

Security, privacy, and responsible reuse

Provider credentials belong in backend or deployment secret stores. Public calendar endpoints expose sanitized availability, while integration setup and private account data require protected server configuration. Optional integrations and analytics should be reviewed before deploying your own copy.

Report vulnerabilities through SECURITY.md. See .env.example for the configuration template. Replace personal profile data, contact destinations, OAuth settings, and analytics identifiers when adapting this repository.

6. Documentation

Guide Purpose
Documentation index Start here for deeper implementation notes
Design system Visual tokens, components, accessibility, and responsive behavior
Architecture practices Module boundaries, engineering conventions, and release discipline
Repository structure Directory map and ownership
Tester Army manifest Tester Army deterministic browser journey coverage and boundaries
API guide Routes, integrations, environments, and runtime differences
Site audit October 2026 visual and functional verification
Screenshot coverage Dated repository image coverage and fallback rules
Blog media audit Original-source media and provenance
Development history Preserved contributor attribution and historical decisions
Design audit skills Apple HIG critique, responsive audit, and animation motion skills

7. License and contact

The repository’s original code is released under the MIT License. Third-party images, logos, music artwork, and publisher media retain their respective rights; consult the source credits before reuse. Citation metadata is provided in CITATION.cff.

Mangesh Raut · Website · GitHub · LinkedIn · Email

AssistMe text model verification — October 2, 2026

The live text primary is Nemotron 3 Ultra free. OpenRouter's live catalog reports zero prompt and completion token prices. An authenticated inference probe returned HTTP 200, the exact requested model ID, and zero cost. Nemotron Super remains the next free fallback. Ultra is text-only; image requests retain the existing free vision chain. Local/server environment overrides remain explicit.

NVIDIA's model release documents 550B total and 55B active parameters, released June 4, 2026. Availability and free-tier limits depend on the provider. Coding agent: GPT-6 / Codex in Codex desktop; exact variant, reasoning mode, and token usage: unavailable.

AssistMe multimodal routing — October 2, 2026

The live Worker refreshes the OpenRouter model catalog hourly and filters models by the inputs required by each request. New models become fallback candidates only when their advertised capabilities match. Safety classifiers, embeddings, and rerankers are excluded from conversation routing. The browser cannot select arbitrary upstream models.

Input or feature Current behavior Verification
Text and reasoning Nemotron Ultra with compatible free recovery Live streamed reply verified
Short turns Gemma 4, Apodex Mini, then compatible free recovery Live document question verified
Programming Cohere North Mini Code, then Ultra Live JavaScript reply verified
Images and short videos Gemma 4 first; compatible Omni/Qwen recovery Live image and MP4 description verified
PDF and text files Explicit free Cloudflare PDF parser / bounded UTF-8 text Live order-number extraction verified
Audio files Omni/Inkling; compatible Gemini 3.8 recovery before Auto October 3: Gemini 3.8 Flash via Google AI Studio BYOK transcribed the sample
Dictation and read-aloud Browser speech features; cloud TTS when funded Cloud TTS returned HTTP 402; device support depends on browser and OS
Paid Auto Router Low-cost recovery after free candidates fail Free-only Auto test returned no matching candidates
Fusion Deep text research/comparison, gated by server config and positive balance Current account returned HTTP 402; no successful Fusion inference claimed
Image/video generation Not connected to this chat interface No generated-asset claims or fabricated image URLs

Two attachments per turn are supported: images up to 1.2 MB, audio/video/PDF up to 3 MB per file, and text/Markdown/CSV/JSON up to 75 KB. Files are uploaded only when the message is sent; their contents are source material rather than instructions. Failed media processing never falls back to an invented description. Regeneration retains the selected turn's files during the open session.

Streaming records the concrete answering model, provider, generation ID, supplied usage/cost, finish reason, and routing task. The main reply stays readable; technical details are collapsed. Stopping cancels upstream work. Unsupported or interrupted streams recover without concatenating answers from different models. Token estimates remain labeled.

Auto Router selects models by task. Fusion runs a panel and analyst in addition to the outer request, so it is reserved for deep text comparisons and requires credits. A free model ID does not guarantee access: the observed Omni audio minimum was $0.50 and video minimum $1.00; Gemma video succeeded without that balance. These provider restrictions may change.

Regression coverage: 185 API tests, 10 Worker routing/stream boundary tests, and 14 critical Chrome journeys. The attachment journey also runs in Safari. October 3 live checks confirmed text, code, image, video, PDF, and audio processing. Audio recovered through Auto to Gemini 3.8 Flash using Google AI Studio BYOK. OpenRouter reported a zero charge and a provider-side inference cost of $0.002493 for the sample; a zero OpenRouter charge does not prove that BYOK inference is free. A longer conversation caused Auto to return HTTP 402; direct compatible Gemini 3.8 fallback restored the same audio request, so audio now tries that route before Auto. Cloud TTS remains unavailable and Fusion has no successful inference evidence. Coding agent: GPT-6 / Codex in Codex desktop; purpose: live multimodal verification, honest billing metadata, and responsive chatbot review. Exact variant, reasoning mode, and token usage: unavailable.

About

Agentic full-stack portfolio & open-source engineering chronicle: Vanilla ESM, FastAPI, OpenRouter (grok-4.3), WebMCP tools, Apple HIG glassmorphism, and 100/100 Lighthouse CI

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages