How codingmastr/tarun-s-portfolio works
1. Project type and boundary
- This is a single-page React portfolio site with no backend, no database, and no external API layer.
- The architecture is mostly presentation-focused: one app shell composes a set of content sections for navigation, profile/storytelling, skills, work, and contact.
2. Application entry path
- The runtime starts at src/main.jsx, which mounts the React app into the HTML root from index.html.
- src/App.jsx is the top-level composition layer that assembles the page into named sections.
3. Page composition
- The main UI is split into reusable section components under src/components/:
- Navbar
- About
- Skills
- Experience
- Education
- Work
- Contact
- Footer
- This strongly suggests a vertical one-page layout where the navbar links likely jump to anchored sections on the same page.
4. Shared content/data layer
- src/constants.js is the central place for structured portfolio content.
- This file likely feeds repeated or list-based UI such as skills, experience items, education entries, and project cards, keeping the components mostly presentational.
- The presence of a constants module indicates a content-driven design rather than hardcoded markup in each section.
5. Asset management
- Static visual assets live under src/assets/ in themed subfolders:
- company_logo
- education_logo
- tech_logo
- work_logo
- These assets are imported directly into components and used to visually brand sections like experience, education, and projects.
6. Layout and visual effects
- src/components/BlurBlob.jsx is a separate visual embellishment component, likely responsible for background glow/blob effects.
- This implies the UI combines standard content sections with a small number of reusable decorative primitives for the animated portfolio look.
7. Styling architecture
- Styling is split across:
- Tailwind CSS via tailwind.config.js
- PostCSS via postcss.config.js
- Global CSS in src/index.css
- App-level overrides in src/App.css
- The site is built around utility-first styling with a small amount of custom CSS for global behavior and section-specific refinements.
8. Build and runtime tooling
- The project uses Vite (vite.config.js) as the development server and production bundler.
- React is the UI runtime, and ESLint (eslint.config.js) is present for code quality.
- package-lock.json indicates a standard npm-based dependency workflow.
9. Navigation and interaction model
- The Navbar is the main cross-section control surface for the page.
- The README mentions smooth scroll and animation effects, so the interaction model is likely driven by CSS/Tailwind transitions and scrolling behavior, not by complex client-side routing.
- This is a static interaction model: users move through sections rather than navigate between pages.
10. Content sections and their role
- About introduces the person.
- Skills presents capabilities and technologies.
- Experience and Education provide timeline-style credentials.
- Work showcases projects or portfolio pieces.
- Contact exposes a way to reach the owner.
- Footer closes the page with attribution or links.
- These are discrete domain sections, each with a clear responsibility and minimal coupling.
11. Deployment shape
- The README states deployment on Vercel, so the app is intended to be served as a static frontend build.
- There is no indication of server-rendered infrastructure or runtime services beyond static hosting.
12. Repository artifact note
- dist.zip suggests a packaged build artifact is included in the repository or distribution bundle.
- For architecture diagrams, it can be treated as an output artifact of the Vite build rather than a source subsystem.
13. High-level data flow
- Static content and assets flow into section components.
- Section components are assembled by App.
- main.jsx mounts the app into the DOM.
- The result is a client-rendered, static portfolio page optimized for presentation and navigation.
14. What to draw in an architecture diagram
- A single frontend box containing:
- React app shell
- section components
- shared constants/content
- static assets
- styling/tooling layer
- External boundary only includes:
- browser/DOM
- static hosting on Vercel
- optional links to YouTube/live demo mentioned in README
Main entry points: App.jsx App · constants.js constants.js · index.css index.css · vite.config.js vite.config.js
Components 21
Runtime
Browser-executed React app
- index.html · HTML mount point for the React app
index.html - main.jsx · Bootstraps React and mounts the app
src/main.jsx - App · Top-level composition for the single-page portfolio
src/App.jsx - Navbar · Primary section navigation for the page
src/components/Navbar/Navbar.jsx - About · Introductory personal story section
src/components/About/About.jsx - Skills · Technology and capability summary
src/components/Skills/Skills.jsx - Experience · Work history and professional experience
src/components/Experience/Experience.jsx - Education · Education and credentials
src/components/Education/Education.jsx - Work · Projects and showcased work
src/components/Work/Work.jsx - Contact · Ways to reach the owner
src/components/Contact/Contact.jsx - Footer · Page end, attribution, or auxiliary links
src/components/Footer/Footer.jsx - BlurBlob · Reusable background glow/blob visual
src/components/BlurBlob.jsx
Content
Shared portfolio data and visual assets
- constants.js · Central structured portfolio content
src/constants.js - assets · Imported logos and imagery for sections
src/assets
Tooling
Build, styling, and quality pipeline
- App.css · App-level visual overrides and refinements
src/App.css - index.css · Global CSS foundation for the site
src/index.css - tailwind.config.js · Utility-first styling configuration
tailwind.config.js - postcss.config.js · CSS processing pipeline configuration
postcss.config.js - vite.config.js · Development server and production bundling
vite.config.js - eslint.config.js · Code quality and linting rules
eslint.config.js - dist.zip · Packaged output bundle from the build
dist.zip
Connections 25
- index.html → main.jsx: loads · Browser document loads the React entry
- main.jsx → App: mounts · Entry point mounts the app shell
- App → Navbar: composes · App assembles the page navigation
- App → About: composes · App places the intro section
- App → Skills: composes · App places the skills section
- App → Experience: composes · App places the experience timeline
- App → Education: composes · App places the education timeline
- App → Work: composes · App places the portfolio section
- App → Contact: composes · App places the contact section
- App → Footer: composes · App closes the page with the footer
- App → BlurBlob: decorates · App uses shared visual effects
- App → constants.js: reads · App and sections consume shared content
- About → constants.js: reads · Section content is driven by shared data
- Skills → constants.js: reads · Section content is driven by shared data
- Experience → constants.js: reads · Section content is driven by shared data
- Education → constants.js: reads · Section content is driven by shared data
- Work → constants.js: reads · Section content is driven by shared data
- App → assets: imports · App sections use static logos and imagery
- App → App.css: styles · App-level styling overrides the base presentation
- App → index.css: styles · App depends on global CSS foundation
- index.css → tailwind.config.js: configured by · Global styles work with Tailwind utilities
- index.css → postcss.config.js: processed by · CSS passes through PostCSS tooling
- vite.config.js → index.html: serves · Vite uses the HTML entry during dev and build
- eslint.config.js → App: checks · Linting covers source components and app code
- vite.config.js → dist.zip: produces · Build pipeline outputs packaged artifact