How sabbir-offc/sabbir1dev works
1. This is a Next.js App Router site, likely a portfolio/personal site rather than a data-driven product. The repository is organized around routes in src/app, reusable UI in src/components, and content/data in src/data.
2. The top-level route structure is simple and mostly page-based: / (src/app/page.tsx), /about, /projects, /projects/[slug], and /contact. Each route has its own page.tsx, with the projects detail route using a dynamic segment for per-project pages.
3. src/app/layout.tsx is the global shell. It typically owns the HTML/body structure and wraps the app-wide providers from src/app/providers.tsx, which is where client-only concerns such as theme state or other context would be isolated from server-rendered layout code.
4. The home page is composed from many sectional components under src/components/home. This suggests a landing page assembled from independent blocks such as hero, highlights, skills, experience, project previews, blog preview, about summary, CTA, and scroll progress rather than one monolithic page component.
5. The projects area is data-backed and appears to be the main structured content flow in the app. src/data/projects.ts is the source of truth, consumed by src/app/projects/ProjectsGrid.tsx, src/components/ProjectTeaser.tsx, and src/app/projects/[slug]/page.tsx to render both the listing and individual project pages.
6. The dynamic project detail route is the main content boundary. It likely resolves a slug from the URL, looks up the corresponding project in the local data module, and renders a detail view from that static dataset. This means the app has no obvious backend API or database dependency for projects.
7. The contact section is implemented as a dedicated route plus a specialized form component: src/app/contact/page.tsx and src/app/contact/ContactFormUltra.tsx. That separation implies the form is a distinct interactive client-side subtree, likely handling validation and submission behavior independently from the rest of the mostly static site.
8. Shared UI primitives live in src/components and are reused across routes. Examples include SiteHeader, ThemeToggle, ShinyButton, TechMarquee, and reusable page-level elements like ProjectTeaser. This indicates a component-driven architecture with a consistent visual system across the site.
9. Styling is global-first with src/app/globals.css, plus Next.js/PostCSS tooling (postcss.config.mjs, eslint.config.mjs, next.config.ts). The app likely relies on utility/component styling conventions rather than a separate design-system package.
10. Static assets live under public, including public/preview, which probably supports social preview images or downloadable media for the portfolio. That reinforces the repo’s static/presentation-oriented architecture: content is assembled at build/render time from local components, assets, and typed data.
11. Overall data flow is straightforward: route entry points compose page sections, sections consume shared components, and project-specific content is read from local TypeScript data. The important architectural boundary is between route/page orchestration and reusable presentation blocks, with src/data/projects.ts acting as the key content source.
12. There are no signs of external services, persistence layers, or server-side business logic in the file tree. For an architecture diagram, the main boxes are: Next.js app/router, global layout/providers, shared UI component library, home-page sections, projects data source, contact form component, and static public assets.
Main entry points: app/page.tsx Home page · layout.tsx Root layout · ProjectsPreview.tsx Projects preview · [slug]/page.tsx Project detail
Components 26
Next.js app
Route shell and page entrypoints
- Root layout · Defines the global HTML/body shell and app-wide wrapping.
src/app/layout.tsx - Providers · Client-only app providers for shared runtime state such as theme.
src/app/providers.tsx - Home page · Top-level landing route composed from sectional home components.
src/app/page.tsx - About page · Standalone about route.
src/app/about/page.tsx - Projects page · Projects listing route that delegates to the projects grid.
src/app/projects/page.tsx - Project detail · Slug-based project detail route for individual project pages.
src/app/projects/[slug]/page.tsx - Contact page · Contact route that hosts the interactive contact form.
src/app/contact/page.tsx - Projects grid · Renders the projects index from local project data.
src/app/projects/ProjectsGrid.tsx - Contact form · Specialized contact form subtree for the contact route.
src/app/contact/ContactFormUltra.tsx
Home sections
Composable landing-page blocks
- Hero · Primary landing-page introduction block.
src/components/home/Hero.tsx - Highlights · Landing-page summary of key strengths or features.
src/components/home/Highlights.tsx - Skills strip · Compact strip for technical skills or tags.
src/components/home/SkillsStrip.tsx - Experience · Landing-page experience timeline or history block.
src/components/home/Experience.tsx - Projects preview · Featured projects teaser section on the home page.
src/components/home/ProjectsPreview.tsx - Blog preview · Preview section for writing or updates.
src/components/home/BlogPreview.tsx - About summary · Short about summary section on the landing page.
src/components/home/About.tsx - CTA section · Call-to-action block near the bottom of the home page.
src/components/home/CTASection.tsx - Scroll progress · Scroll-position indicator used within the landing page.
src/components/home/ScrollProgress.tsx
Shared UI
Reusable presentation components
- Site header · Shared top-level header/navigation used across routes.
src/components/SiteHeader.tsx - Theme toggle · Theme switcher used in the site chrome.
src/components/ThemeToggle.tsx - Shiny button · Reusable styled call-to-action button.
src/components/ShinyButton.tsx - Tech marquee · Scrolling tech/skills display used as a reusable visual element.
src/components/TechMarquee.tsx - Project teaser · Reusable project preview card used in listings and previews.
src/components/ProjectTeaser.tsx
Content source
Local data and static assets
- Projects data · Local source of truth for projects used by listings and detail pages.
src/data/projects.ts - Public assets · Static files and preview media served from the public directory.
public/preview - Global styles · App-wide CSS entrypoint for global styling conventions.
src/app/globals.css
Connections 26
- Root layout → Providers: wraps · The root layout composes the provider layer around the app.
- Root layout → Site header: includes · Global shell likely renders shared chrome such as the header.
- Root layout → Global styles: loads · Global layout imports the application stylesheet.
- Home page → Hero: composes · The landing page is built from sectional home blocks.
- Home page → Highlights: composes · The landing page is built from sectional home blocks.
- Home page → Skills strip: composes · The landing page is built from sectional home blocks.
- Home page → Experience: composes · The landing page is built from sectional home blocks.
- Home page → Projects preview: composes · The landing page is built from sectional home blocks.
- Home page → Blog preview: composes · The landing page is built from sectional home blocks.
- Home page → About summary: composes · The landing page is built from sectional home blocks.
- Home page → CTA section: composes · The landing page is built from sectional home blocks.
- Home page → Scroll progress: uses · Landing page includes a scroll position indicator.
- About page → Site header: shares chrome · The about route uses the shared site shell.
- Projects page → Projects grid: renders · The projects route delegates listing logic to the grid component.
- Projects grid → Projects data: reads · The grid consumes the local projects dataset.
- Project detail → Projects data: looks up · The dynamic detail route resolves project content by slug.
- Project detail → Project teaser: reuses · Detail/listing presentation likely shares project card patterns.
- Projects preview → Project teaser: reuses · Home project previews use the shared project card component.
- Contact page → Contact form: hosts · The contact route is centered on the specialized form component.
- Contact form → Shiny button: uses · Interactive form actions likely reuse the shared button primitive.
- Site header → Theme toggle: includes · The header hosts the theme switcher control.
- Hero → Shiny button: uses · Hero calls to action use the shared button styling.
- Skills strip → Tech marquee: uses · The skills strip can be implemented with the marquee component.
- Projects preview → Projects data: highlights · Featured projects preview is driven by the same project dataset.
- Public assets → Home page: supports · Static media supports the presentation-first portfolio site.
- Public assets → Project detail: supports · Project detail pages likely draw from local static assets.