A lightweight analytics dashboard for developers to showcase their profile professionally, monitor project performance, view deployment & API usage insights, and track errors and traffic trends.
Built with SvelteKit as an installable Progressive Web App (PWA).
/profile)/dashboard)| Aspect | Approach |
|---|---|
| Framework | SvelteKit |
| Rendering | Hybrid SSR + CSR |
| PWA | Installable with caching |
| Data | Mock JSON files (simulates backend) |
| Charts | ApexCharts (dynamically loaded) |
| Styling | Global CSS + Component-scoped CSS |
| Component | Rendering | Reason |
|---|---|---|
| Profile Page | SSR | SEO friendly, static content |
| Dashboard Metrics | SSR | Critical data, fast first paint |
| Deployment Status | SSR | Lightweight, important info |
| Charts | CSR | Heavy JS, not needed for initial paint |
| Error Logs | CSR | Interactive, loads on demand |
src/
āāā lib/
ā āāā data/
ā āāā index.js # Barrel exports
ā āāā site_config.json # Site-wide configuration
ā āāā profile.json # Profile page data
ā āāā tech_stack.json # Skills and proficiencies
ā āāā projects.json # Featured projects
ā āāā contributions.json # Contribution heatmap data
ā āāā dashboard/
ā āāā metrics.json # Overview metrics
ā āāā traffic.json # Traffic analytics (per-project)
ā āāā errors.json # Error logs
ā āāā deployments.json # Deployment status
āāā routes/
ā āāā +layout.svelte # Root layout with nav & theme toggle
ā āāā +layout.server.js # Site config loader
ā āāā +page.svelte # Root redirect to /profile
ā āāā profile/
ā ā āāā +page.svelte # Profile page UI
ā ā āāā +page.server.js # SSR data fetching
ā āāā dashboard/
ā āāā +page.svelte # Dashboard page UI
ā āāā +page.server.js # SSR data fetching
āāā styles/
ā āāā global.css # Theme variables, typography, utilities
āāā app.html # HTML template with favicon & fonts
static/
āāā icons/ # App icons (PWA + favicon)
āāā lib/apexcharts/ # ApexCharts library
āāā manifest.json # PWA manifest
āāā screenshots/ # PWA screenshots
# Clone the repository
git clone <repository-url>
cd my_test_project
# Install dependencies
npm install
# Start development server
npm run dev
The app will be available at http://localhost:5173
# Create production build
npm run build
# Preview production build
npm run preview
The app supports Dark and Light themes with a toggle in the header.
Theme variables are defined in src/styles/global.css:
:root[data-theme="dark"] {
--color-bg-primary: #0a0a0f;
--color-accent: #f97316;
/* ... */
}
:root[data-theme="light"] {
--color-bg-primary: #f8fafc;
--color-accent: #ea580c;
/* ... */
}
Theme preference is persisted in localStorage.
All data is stored in JSON files under src/lib/data/. Keys follow snake_case convention.
src/lib/data/profile.jsonsrc/lib/data/tech_stack.jsonsrc/lib/data/projects.jsonsrc/lib/data/dashboard/metrics.jsonsrc/lib/data/dashboard/traffic.jsonsrc/lib/data/dashboard/errors.jsonsrc/lib/data/dashboard/deployments.jsonsrc/lib/data/site_config.json| Decision | Rationale |
|---|---|
| SSR for Profile | SEO optimization, faster first paint |
| CSR for Charts | Heavy JS library, not critical for initial load |
| JSON mock data | Simulates backend, easy to modify |
| ApexCharts (CDN) | No npm dependency, loaded on-demand |
| CSS Variables | Easy theming, consistent design tokens |
| Legacy Svelte syntax | Better compatibility, familiar patterns |
Amal B Nair
Senior Fullstack Web Developer
š§ amal004nair@gmail.com
š LinkedIn | GitHub
This project is for demonstration purposes.