- Full grant strategy framework for renewable energy & green hydrogen - AI-powered grant studio, partner outreach, financial modeling - Umami analytics with data-performance tracking - Live Degelas metrics connected to solar.degelas.be - Trilingual (EN/FR/AR) with i18n support - Dockerized with Nginx frontend + Express API proxy
21 KiB
Atlas Green Morocco — Complete File Manifest
Every File in the Production-Ready Package
🎯 Quick File Reference
Essential Files (Must Keep)
| File | Purpose | Size | Can Delete? |
|---|---|---|---|
src/App.tsx |
Main React app component | ~500 B | ❌ No |
src/main.tsx |
React entry point | ~200 B | ❌ No |
index.html |
HTML template | ~400 B | ❌ No |
Dockerfile |
Docker build configuration | ~300 B | ❌ No |
docker-compose.yml |
Docker Compose config | ~200 B | ❌ No |
nginx.conf |
Nginx server config | ~1 KB | ❌ No |
package.json |
Dependencies and scripts | ~1 KB | ❌ No |
tailwind.config.ts |
Tailwind CSS config | ~500 B | ❌ No |
Important Files (Should Keep)
| File | Purpose | Size | Can Delete? |
|---|---|---|---|
.dockerignore |
Docker build exclusions | ~200 B | ❌ No (for Docker) |
tsconfig.json |
TypeScript configuration | ~500 B | ❌ No (for build) |
vite.config.ts |
Vite build configuration | ~300 B | ❌ No (for build) |
public/images/hero.jpg |
Hero section background | ~200 KB | ✅ Yes (but recommended) |
Documentation (For Reference)
| File | Purpose | Size | Can Delete? |
|---|---|---|---|
README.md |
Project overview | ~20 KB | ✅ Yes (but recommended) |
DEPLOYMENT_GUIDE.md |
12–36 month playbook | ~40 KB | ✅ Yes (but recommended) |
FOUNDER_CHECKLIST.md |
Daily/weekly tasks | ~30 KB | ✅ Yes (but recommended) |
DOCKER_DEPLOYMENT.md |
Docker deployment guide | ~35 KB | ✅ Yes (but recommended) |
PACKAGE_SUMMARY.md |
Package contents | ~30 KB | ✅ Yes (but recommended) |
FILE_MANIFEST.md |
This file | ~20 KB | ✅ Yes |
📁 Complete Directory Tree
atlas-green-morocco/
│
├── 📄 Root Files
│ ├── index.html # HTML template (entry point)
│ ├── package.json # Dependencies and npm scripts
│ ├── package-lock.json # Dependency lock file (auto-generated)
│ ├── tsconfig.json # TypeScript configuration
│ ├── vite.config.ts # Vite build tool config
│ ├── tailwind.config.ts # Tailwind CSS configuration
│ ├── .gitignore # Git exclusions
│ │
│ ├── 🐳 Docker & Deployment
│ │ ├── Dockerfile # Multi-stage Docker build
│ │ ├── docker-compose.yml # Docker Compose setup
│ │ ├── nginx.conf # Nginx server configuration
│ │ └── .dockerignore # Docker build exclusions
│ │
│ └── 📚 Documentation
│ ├── README.md # Complete project documentation
│ ├── DEPLOYMENT_GUIDE.md # 12–36 month execution playbook
│ ├── FOUNDER_CHECKLIST.md # Daily/weekly action checklist
│ ├── DOCKER_DEPLOYMENT.md # Production deployment guide
│ ├── PACKAGE_SUMMARY.md # Package contents & usage
│ ├── FILE_MANIFEST.md # This file
│ └── LICENSE # MIT License
│
├── src/ # Source code directory
│ │
│ ├── components/ # React components
│ │ ├── Nav.tsx # Navigation header (sticky)
│ │ ├── Hero.tsx # Hero section with background
│ │ ├── PositionSection.tsx # Business model selector (interactive)
│ │ ├── OpportunitiesSection.tsx # 4 opportunity categories (A–D)
│ │ ├── ZonesSection.tsx # Moroccan free zones
│ │ ├── PlaybookSection.tsx # Company structure, funding, MVP
│ │ ├── DeploymentPlaybook.tsx # 7-phase deployment guide
│ │ ├── MacroSection.tsx # Morocco's advantages
│ │ ├── IdeasSection.tsx # Top 5 startup ideas
│ │ ├── PathSection.tsx # Recommended practical path
│ │ ├── Footer.tsx # Footer with branding
│ │ └── Section.tsx # Reusable section wrapper
│ │
│ ├── data/ # TypeScript data files
│ │ ├── index.ts # Business models, opportunities, zones, ideas
│ │ └── deployment.ts # 7 deployment phases (100+ actions)
│ │
│ ├── utils/ # Utility functions
│ │ └── cn.ts # Tailwind class merging
│ │
│ ├── App.tsx # Main app component
│ ├── main.tsx # React entry point
│ └── index.css # Global Tailwind CSS styles
│
├── public/ # Static assets
│ └── images/
│ └── hero.jpg # Hero background image (AI-generated)
│
├── dist/ # Built application (auto-generated)
│ └── index.html # Single-file compiled app
│
└── node_modules/ # Dependencies (auto-generated, excluded from git)
└── [installed packages]
🔧 File Descriptions
Source Code Files
src/App.tsx (Main Component)
// Root React component
// Renders all sections in order:
// - Nav
// - Hero
// - PositionSection
// - OpportunitiesSection
// - ZonesSection
// - PlaybookSection
// - DeploymentPlaybook
// - MacroSection
// - IdeasSection
// - PathSection
// - Footer
Lines: ~40
Edit: When adding new sections or reordering
src/main.tsx (Entry Point)
// React DOM render entry point
// Mounts <App /> to #root div
Lines: ~10
Edit: Only if changing React version or setup
src/components/Nav.tsx (Navigation)
// Sticky header navigation
// Features:
// - Fixed positioning on scroll
// - Mobile hamburger menu
// - Quick links to all sections
// - Responsive design
Lines: ~100
Edit: To add/remove navigation links or change styling
src/components/Hero.tsx (Hero Section)
// Full-screen hero with background image
// Features:
// - Background image (public/images/hero.jpg)
// - Gradient overlay
// - Core thesis statement
// - CTA buttons
// - Key statistics
Lines: ~80
Edit: To change hero image, copy, or CTA
src/components/PositionSection.tsx (Interactive Model Selector)
// Business model comparison section
// Features:
// - 5 business models with metrics
// - Interactive click to select
// - Sticky detail panel
// - Capital/complexity/scalability meters
// - Entry point benefits highlight
Lines: ~150
Edit: To modify business models or metrics
src/components/OpportunitiesSection.tsx (Opportunity Categories)
// 4 opportunity categories (A–D)
// Features:
// - Expandable accordion cards
// - 13 products/services detailed
// - Context descriptions
// - "Why attractive" benefits
Lines: ~120
Edit: To add/modify opportunities or products
src/components/ZonesSection.tsx (Moroccan Free Zones)
// 5 Moroccan free zones guide
// Features:
// - Zone cards with specialization
// - Future zone highlight (Dakhla)
// - Icons and descriptions
Lines: ~60
Edit: To add/remove zones or descriptions
src/components/PlaybookSection.tsx (Execution Playbook)
// Company structure, funding, MVP strategy
// Features:
// - MVP Build → Embed → Expand timeline
// - Phase 2 (company structure)
// - Phase 4 (funding)
// - Phase 5 (MVP strategy)
Lines: ~90
Edit: To modify phases or add new ones
src/components/DeploymentPlaybook.tsx (Interactive Playbook)
// 7 deployment phases with full details
// Features:
// - 7 expandable accordion cards
// - 36+ actions with owners/timelines
// - 21+ checkpoints
// - 90+ success metrics
// - 40+ pitfalls documented
// - Color-coded criticality badges
Lines: ~200
Edit: To modify phases, actions, metrics, or pitfalls
src/components/MacroSection.tsx (Macro Analysis)
// Morocco's advantages & macro trends
// Features:
// - 5 advantage cards
// - Core insight callout
Lines: ~50
Edit: To modify advantages or add new insights
src/components/IdeasSection.tsx (Top 5 Ideas)
// 5 highest-upside startup ideas
// Features:
// - Ranked list with icons
// - Brief description for each
Lines: ~50
Edit: To add/remove ideas
src/components/PathSection.tsx (Practical Path)
// 5-step recommended journey
// Features:
// - Numbered timeline
// - Dark section with gradient
// - CTA callout box
Lines: ~70
Edit: To modify path steps or messaging
src/components/Section.tsx (Reusable Component)
// Generic section wrapper
// Features:
// - Eyebrow label
// - Title
// - Intro text
// - Optional dark mode
Lines: ~40
Edit: To change section styling defaults
src/components/Footer.tsx (Footer)
// Footer with branding
// Features:
// - Logo
// - Copyright
// - Disclaimer
Lines: ~30
Edit: To add contact info, links, etc.
Data Files
src/data/index.ts (Main Data)
// Business models (5)
// Entry point benefits (5)
// Opportunities (4 categories, 13 products)
// Zones (5 Moroccan free zones)
// Startup ideas (5)
// Morocco advantages (5)
// Practical path (5 steps)
Lines: ~350
Edit: To update any strategy content
src/data/deployment.ts (Deployment Phases)
// 7 deployment stages (0–7)
// Each includes:
// - Phase title, duration, objective
// - 5–6 actions (title, description, owner, timeline, resources)
// - 3–4 checkpoints (name, description, success criteria)
// - 8–12 success metrics
// - 4–6 pitfalls
Lines: ~900
Edit: To modify deployment timeline or add phases
Configuration Files
package.json
{
"name": "react-vite-tailwind",
"version": "0.0.0",
"dependencies": {
"react": "^18.2.0",
"react-dom": "^18.2.0",
"clsx": "^2.0.0",
"tailwind-merge": "^2.2.0"
},
"devDependencies": {
"typescript": "^5.3.0",
"vite": "^7.3.2",
"tailwindcss": "^3.4.0",
"@types/react": "^18.2.0",
"@types/node": "^20.0.0"
},
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview"
}
}
Edit: To add new npm packages or modify scripts
tsconfig.json
{
"compilerOptions": {
"target": "ES2020",
"module": "ESNext",
"jsx": "react-jsx",
"strict": true,
"moduleResolution": "bundler"
}
}
Edit: To change TypeScript compilation settings
vite.config.ts
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import singleFile from 'vite-plugin-singlefile'
export default defineConfig({
plugins: [react(), singleFile()]
})
Edit: To change Vite build behavior or add plugins
tailwind.config.ts
export default {
theme: {
extend: {
colors: {
emerald: { ... },
teal: { ... }
}
}
}
}
Edit: To customize colors, fonts, spacing, etc.
Docker Files
Dockerfile (Multi-Stage Build)
# Stage 1: Builder (Node.js 20 Alpine)
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
# Stage 2: Runtime (Nginx Alpine)
FROM nginx:alpine AS runner
RUN rm -rf /usr/share/nginx/html/*
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=builder /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
Edit: To change Node version, Nginx config, or build steps
docker-compose.yml
version: '3.8'
services:
atlas-green-app:
build:
context: .
dockerfile: Dockerfile
image: atlas-green-morocco:latest
container_name: atlas-green-production
ports:
- "80:80"
restart: unless-stopped
environment:
- NODE_ENV=production
Edit: To change port, container name, or environment variables
nginx.conf (Web Server)
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
# Gzip compression
gzip on;
gzip_types text/plain text/css application/javascript;
# Security headers
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
# SPA routing
location / {
try_files $uri $uri/ /index.html;
}
# Static asset caching
location ~* \\.(?:ico|css|js)$ {
expires 6M;
}
}
Edit: To add HTTPS, change domain, modify headers, etc.
.dockerignore
node_modules
dist
.git
.gitignore
.dockerignore
Dockerfile
docker-compose.yml
README.md
Edit: To exclude additional files from Docker build
HTML & CSS
index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Atlas Green — Building the Hydrogen Economy in Morocco (2026–2035)</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>
Edit: To change page title or meta tags
src/index.css
@import "tailwindcss";
html {
scroll-behavior: smooth;
}
body {
font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto;
}
Edit: To add global CSS or change font
Utilities
src/utils/cn.ts
import { clsx, type ClassValue } from "clsx";
import { twMerge } from "tailwind-merge";
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs));
}
Edit: Rarely (used for merging Tailwind classes)
Documentation Files
README.md (~500 lines)
- Project overview
- What is Atlas Green Morocco
- Features
- Getting started
- Project structure
- Documentation guide
- Technology stack
- Customization
- Performance metrics
- Browser support
- Contributing
- License
- Contact
DEPLOYMENT_GUIDE.md (~600 lines)
- Phase-by-phase breakdown (0–7)
- Actions with timelines
- Success checkpoints
- Success metrics
- Common pitfalls
- Quick reference table
- Financial milestones
- Funding by phase
- Pre-launch checklist
FOUNDER_CHECKLIST.md (~500 lines)
- Week-by-week tasks
- Daily action items
- Metrics to track
- Founder habits (weekly, monthly, quarterly)
- Key metrics guide
- Pro tips and don'ts
- Self-care reminders
DOCKER_DEPLOYMENT.md (~400 lines)
- Quick start (local)
- Production deployment options
- Docker architecture explained
- Nginx configuration details
- Environment variables
- Health checks
- Scaling tips
- Troubleshooting
- Security best practices
- Cost analysis
PACKAGE_SUMMARY.md (~350 lines)
- Package contents overview
- File structure
- Quick start (3 ways)
- Documentation guide
- Feature breakdown
- Customization guide
- Data statistics
- Design system
- Security & performance
- Pre-launch checklist
FILE_MANIFEST.md (~250 lines, this file)
- Quick file reference
- Complete directory tree
- File descriptions
- Lines of code per file
- Edit guidelines
📊 Code Statistics
Total Lines of Code
| Category | Files | Lines | Purpose |
|---|---|---|---|
| React Components | 11 | ~1,100 | UI components |
| Data Files | 2 | ~1,250 | Strategy + deployment data |
| Configuration | 5 | ~500 | Build, TypeScript, Tailwind |
| Docker | 3 | ~150 | Containerization |
| HTML/CSS | 2 | ~50 | Global styles |
| Total Code | 23 | ~3,050 | - |
| Documentation | 6 | ~2,500 | .md files |
| Grand Total | 29 | ~5,550 | Everything |
Bundle Sizes
| Metric | Size | Compressed | Notes |
|---|---|---|---|
| HTML output | 307 KB | 98 KB | Single-file build |
| Docker image | <25 MB | - | Nginx Alpine based |
| hero.jpg | ~200 KB | - | AI-generated background |
🔄 File Dependencies
index.html
↓
src/main.tsx
↓
src/App.tsx
├─→ src/components/Nav.tsx
├─→ src/components/Hero.tsx
├─→ src/components/PositionSection.tsx
│ ↓
│ src/data/index.ts (businessModels, entryPointBenefits)
├─→ src/components/OpportunitiesSection.tsx
│ ↓
│ src/data/index.ts (opportunities)
├─→ src/components/ZonesSection.tsx
│ ↓
│ src/data/index.ts (zones)
├─→ src/components/PlaybookSection.tsx
│ ↓
│ src/data/index.ts (phases, mvpSteps)
├─→ src/components/DeploymentPlaybook.tsx
│ ↓
│ src/data/deployment.ts (deploymentStages)
├─→ src/components/MacroSection.tsx
│ ↓
│ src/data/index.ts (moroccoAdvantages)
├─→ src/components/IdeasSection.tsx
│ ↓
│ src/data/index.ts (startupIdeas)
├─→ src/components/PathSection.tsx
│ ↓
│ src/data/index.ts (practicalPath)
└─→ src/components/Footer.tsx
All components use:
├─→ src/components/Section.tsx
├─→ src/utils/cn.ts
└─→ Tailwind CSS (via src/index.css)
🛠️ Building & Deployment Flow
package.json (npm scripts)
├─→ npm run dev
│ └─→ Vite dev server (port 5173)
├─→ npm run build
│ ├─→ TypeScript compilation
│ ├─→ React + Vite bundling
│ ├─→ Tailwind CSS processing
│ └─→ Output to dist/ (single index.html)
└─→ npm run preview
└─→ Preview production build locally
Dockerfile
├─→ Stage 1: Build (Node.js Alpine)
│ ├─→ npm ci (install dependencies)
│ ├─→ npm run build (compile)
│ └─→ Output: dist/index.html
└─→ Stage 2: Runtime (Nginx Alpine)
├─→ Copy dist/index.html → /usr/share/nginx/html/
├─→ Copy nginx.conf → /etc/nginx/conf.d/
└─→ Expose port 80, run Nginx
docker-compose.yml
├─→ docker compose up (build + run)
├─→ docker compose logs (view logs)
└─→ docker compose down (stop container)
🔐 Security: What's Where
| Security Feature | Location | Details |
|---|---|---|
| Gzip compression | nginx.conf (line 7) | Reduces bandwidth 60% |
| Security headers | nginx.conf (line 11) | X-Frame-Options, CSP, etc. |
| HTTPS ready | DOCKER_DEPLOYMENT.md | Use Traefik or Cloudflare |
| Data encryption | Tailwind only | No backend, no data storage |
| Input validation | React components | Form validation (not applicable) |
| CORS | nginx.conf | Not explicitly set (static site) |
📝 Editing Checklists
To Add a New Deployment Phase
- Edit
src/data/deployment.ts - Add new
DeploymentStageobject todeploymentStagesarray - Include: phase, title, objective, actions, checkpoints, metrics, pitfalls
- Rebuild:
npm run build - Test in browser
To Modify Business Models
- Edit
src/data/index.ts→businessModelsarray - Change properties (name, capital, complexity, etc.)
- Rebuild:
npm run build - PositionSection will automatically update
To Add a New Opportunity Category
- Edit
src/data/index.ts→opportunitiesarray - Add new
Opportunityobject with products and functions - Update the icon emoji if needed
- Rebuild:
npm run build - OpportunitiesSection will automatically display
To Deploy to Production
- Ensure
Dockerfile,docker-compose.yml,nginx.confare correct - Run:
docker compose up -d --build - Access at
http://your_server_ip - See
DOCKER_DEPLOYMENT.mdfor specific platform instructions
🚀 File Optimization Tips
For Development
- Keep
src/organized (components/ and data/ folders) - Use TypeScript for type safety
- Use
npm run devfor hot reload
For Production
- Run
npm run buildbefore deploying - Use Docker for containerization
- Verify
dist/index.htmlcontains compiled app - Test with
docker compose upbefore push
For Maintenance
- Keep
src/data/files in sync - Update documentation when changing strategy
- Use git for version control
- Tag releases with version numbers
📦 What NOT to Delete
Critical (app won't work):
- ❌
src/App.tsx - ❌
index.html - ❌
src/main.tsx - ❌
package.json - ❌
vite.config.ts - ❌
tailwind.config.ts
Important (Docker won't work):
- ❌
Dockerfile - ❌
docker-compose.yml - ❌
nginx.conf
Helpful (won't break, but lose value):
- ⚠️
public/images/hero.jpg(hero won't have background) - ⚠️ Documentation files (lose reference material)
✅ Pre-Deployment Checklist
Before deploying to production:
- All files present (check FILE_MANIFEST.md)
npm run buildcompletes without errorsdist/index.htmlexists and is <400 KBdocker compose up -d --buildsucceeds- Application loads at
http://localhost - All sections visible and clickable
- Navigation links work
- Expandable cards expand/collapse
- Hero image loads
- Responsive on mobile (open devtools, zoom to 375px width)
Last Updated: January 2026
Version: 1.0
Status: Production Ready ✅