chore: remove outdated planning documents from codebase
- Deleted several planning documents including ARCHITECTURE.md, CONCERNS.md, CONVENTIONS.md, INTEGRATIONS.md, STACK.md, STRUCTURE.md, and TESTING.md. - These files were no longer relevant to the current project structure and development practices. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,180 +0,0 @@
|
||||
# External Integrations
|
||||
|
||||
**Analysis Date:** 2026-04-07
|
||||
|
||||
## APIs & External Services
|
||||
|
||||
**Analytics & Tracking:**
|
||||
- Google Analytics (GTM)
|
||||
- Measurement ID: `G-CDVVNFY6MV`
|
||||
- Script: Injected in `index.html` lines 8-16
|
||||
- Implementation: Inline gtag.js initialization with window.dataLayer
|
||||
- Page tracking: Configured in `src/router/index.ts` lines 105-136 via `trackPageView()` function
|
||||
- Tracks: Page path, title, and location on route changes
|
||||
|
||||
- Umami Analytics
|
||||
- Website ID: `83631152-9b6b-4724-aad1-828459ff36dc`
|
||||
- Hosted at: `umami.killiandalcin.fr`
|
||||
- Script tag: `index.html` line 239
|
||||
- Implementation: Self-hosted privacy-focused alternative to Google Analytics
|
||||
|
||||
**Advertising:**
|
||||
- Google AdSense
|
||||
- Client ID: `ca-pub-5219367964457248`
|
||||
- Script: Async loaded in `index.html` lines 18-20
|
||||
- Purpose: Display contextual ads on portfolio pages
|
||||
|
||||
**Social Integration:**
|
||||
Social media links configured in `src/config/site.ts` (no direct API integration):
|
||||
- GitHub/Gitea: `https://gitea.kamisama.ovh/kayjaydee`
|
||||
- LinkedIn: `https://linkedin.com/in/killian-dal-cin`
|
||||
- Discord: `https://discord.com/users/370940770225618954`
|
||||
- Fiverr: `https://www.fiverr.com/users/mr_kayjaydee`
|
||||
- Twitter: `@killiandalcin`
|
||||
|
||||
**Third-Party Services Referenced (Portfolio Content, Not Integrated):**
|
||||
- Instagram API - Referenced in `src/components/TechBadge.vue` and `src/composables/useProjects.ts` as portfolio technology (instagram-bot project)
|
||||
- Crowdin API - Referenced in `src/composables/useProjects.ts` as portfolio technology (crowdin status bot)
|
||||
- Discord.js - Referenced in `src/composables/useProjects.ts` as portfolio technology (Discord bot development)
|
||||
- NPM Package Registry - discord-image-generation published at `https://www.npmjs.com/package/discord-image-generation`
|
||||
|
||||
## Data Storage
|
||||
|
||||
**Databases:**
|
||||
- None detected - Portfolio is static content
|
||||
- Technologies showcased (not used in this app):
|
||||
- MongoDB - Referenced in `src/data/techstack.ts`
|
||||
- MySQL - Referenced in `src/data/techstack.ts`
|
||||
- PostgreSQL - Referenced in `src/data/techstack.ts`
|
||||
- Redis - Referenced in `src/data/techstack.ts`
|
||||
- SQLite - Referenced in `src/data/techstack.ts`
|
||||
|
||||
**File Storage:**
|
||||
- Local filesystem only
|
||||
- Images: `src/assets/images/` directory
|
||||
- Compiled assets: `dist/` directory (generated on build)
|
||||
- Public assets: `public/` directory (favicon, manifest, logos, etc.)
|
||||
|
||||
**Caching:**
|
||||
- Browser caching via content hash in filenames:
|
||||
- Pattern: `assets/[ext]/[name]-[hash].[ext]` (configured in `vite.config.ts` lines 40-42)
|
||||
- CSS: `assets/css/[name]-[hash].css`
|
||||
- JS: `assets/js/[name]-[hash].js`
|
||||
- No server-side caching layer detected
|
||||
|
||||
## Authentication & Identity
|
||||
|
||||
**Auth Provider:**
|
||||
- None - Portfolio is fully public
|
||||
- No authentication system implemented
|
||||
- Fiverr links redirect to external Fiverr service for user authentication
|
||||
|
||||
## Monitoring & Observability
|
||||
|
||||
**Error Tracking:**
|
||||
- None detected
|
||||
- Errors not sent to external service
|
||||
- Console errors only (JavaScript errors in browser dev tools)
|
||||
|
||||
**Logs:**
|
||||
- Browser console logging only
|
||||
- No server-side logging or aggregation
|
||||
- Analytics events sent to Google Analytics and Umami for page views
|
||||
|
||||
**Performance Monitoring:**
|
||||
- Google Analytics provides basic performance metrics
|
||||
- Umami provides engagement metrics
|
||||
- No dedicated APM (Application Performance Monitoring) service
|
||||
|
||||
## CI/CD & Deployment
|
||||
|
||||
**Hosting:**
|
||||
- Static hosting environment (implied)
|
||||
- Docker containerization available:
|
||||
- Build image: `node:22-alpine` (lines 2-17 in `Dockerfile`)
|
||||
- Runtime image: `nginx:stable-alpine` (lines 20-32 in `Dockerfile`)
|
||||
- Port: 80
|
||||
|
||||
**CI Pipeline:**
|
||||
- None detected in repository
|
||||
- Build commands available:
|
||||
- `npm run build` - Full build with type checking
|
||||
- `npm run build-only` - Build only without type checking
|
||||
|
||||
**Deployment Configuration:**
|
||||
- `Dockerfile` - Multi-stage Docker build:
|
||||
1. Build stage: Node 22-alpine with npm install + build
|
||||
2. Production stage: nginx serving built files
|
||||
3. Custom nginx config: `nginx.conf`
|
||||
- `nginx.conf` - SPA routing configuration:
|
||||
- Listens on port 80 (IPv4 and IPv6)
|
||||
- Document root: `/usr/share/nginx/html`
|
||||
- Fallback: All non-file requests route to `/index.html` (SPA requirement)
|
||||
|
||||
## Environment Configuration
|
||||
|
||||
**Required for Development:**
|
||||
- Node.js 22+
|
||||
- npm 10+
|
||||
|
||||
**Required at Runtime:**
|
||||
- No environment variables required (analytics IDs hardcoded in HTML)
|
||||
- Optional (for containerization):
|
||||
- Docker
|
||||
- Docker Compose
|
||||
|
||||
**Hardcoded Configuration:**
|
||||
- Google Analytics: `G-CDVVNFY6MV` - in `index.html` line 9
|
||||
- Google AdSense: `ca-pub-5219367964457248` - in `index.html` line 19
|
||||
- Umami Site ID: `83631152-9b6b-4724-aad1-828459ff36dc` - in `index.html` line 240
|
||||
- Umami URL: `umami.killiandalcin.fr` - in `index.html` line 239
|
||||
- Base URL: `https://killiandalcin.fr` - in multiple config files (`src/config/site.ts`, `index.html`)
|
||||
|
||||
**Secrets Location:**
|
||||
- No secrets management system
|
||||
- All credentials are public analytics/advertising IDs (not sensitive)
|
||||
- No API keys, database passwords, or private credentials in codebase
|
||||
|
||||
## Webhooks & Callbacks
|
||||
|
||||
**Incoming:**
|
||||
- None - Portfolio is read-only
|
||||
|
||||
**Outgoing:**
|
||||
- Google Analytics pageview tracking:
|
||||
- Method: GET requests to Google Analytics endpoint
|
||||
- Triggered: On route navigation
|
||||
- Data: Page path, title, URL
|
||||
- Implementation: `src/router/index.ts` `trackPageView()` function
|
||||
|
||||
- Umami analytics events:
|
||||
- Method: Beacon API (automatic page tracking)
|
||||
- Triggered: Page load and navigation
|
||||
- Data: Standard web vitals
|
||||
|
||||
## CDN & External Resources
|
||||
|
||||
**Fonts:**
|
||||
- Preconnected in `index.html`:
|
||||
- `https://fonts.googleapis.com`
|
||||
- `https://fonts.gstatic.com`
|
||||
- Actual fonts: Not loaded (preconnect only, fonts not referenced in CSS)
|
||||
|
||||
**Images & Media:**
|
||||
- UI Avatar API:
|
||||
- Service: `https://ui-avatars.com/api/`
|
||||
- Usage: Testimonial avatars in `src/data/testimonials.ts` (4 instances)
|
||||
- Pattern: Query-based avatar generation with initials and colors
|
||||
|
||||
- Placeholder Images:
|
||||
- Service: `https://via.placeholder.com/`
|
||||
- Usage: Fallback images in `src/composables/useAssets.ts`
|
||||
- Pattern: 400x300 gray placeholders
|
||||
|
||||
- Portfolio Preview Image:
|
||||
- Hosted at: `https://killiandalcin.fr/portfolio-preview.webp`
|
||||
- Usage: Open Graph and Twitter meta tags (lines 42, 55 in `index.html`)
|
||||
|
||||
---
|
||||
|
||||
*Integration audit: 2026-04-07*
|
||||
Reference in New Issue
Block a user