Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 96 additions & 0 deletions apps/api/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
# Dependencies
node_modules/
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Environment variables
.env
.env.local
.env.development.local
.env.test.local
.env.production.local

# Build output
dist/
build/
*.tsbuildinfo

# Logs
logs/
*.log

# Runtime data
pids/
*.pid
*.seed
*.pid.lock

# Coverage directory used by tools like istanbul
coverage/
*.lcov

# nyc test coverage
.nyc_output

# Dependency directories
jspm_packages/

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env.test

# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache

# next.js build output
.next

# nuxt.js build output
.nuxt

# vuepress build output
.vuepress/dist

# Serverless directories
.serverless/

# FuseBox cache
.fusebox/

# DynamoDB Local files
.dynamodb/

# TernJS port file
.tern-port

# IDE files
.vscode/
.idea/
*.swp
*.swo
*~

# OS generated files
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
139 changes: 63 additions & 76 deletions apps/api/README.md
Original file line number Diff line number Diff line change
@@ -1,106 +1,93 @@
# 🚀 Express API (Codegen, Figma Import, Export)
# StackGenie API

Cette API backend est développée avec **Express.js**.
Elle fournit trois fonctionnalités principales :
**TypeScript Express.js backend for StackGenie** - Africa's first open-source AI-powered framework that generates fullstack apps from prompts.

* **Codegen** → Génération de code à partir d’un prompt texte.
* **Figma Import** → Import de données depuis Figma.
* **Export** → Export de projets ou de fichiers générés.
## 🚀 Quick Start

---
```bash
# Install dependencies
npm install

## 📂 Structure du projet
# Set up environment variables
cp .env.example .env
# Edit .env with your configuration

# Start development server (TypeScript)
npm run dev
```
api-express/
├─ src/
│ ├─ routes/
│ │ ├─ codegen.js # Routes pour la génération de code
│ │ ├─ figma.js # Routes pour l'import depuis Figma
│ │ └─ export.js # Routes pour l'export des données
│ ├─ controllers/
│ │ ├─ codegenController.js # Logique métier de la génération de code
│ │ ├─ figmaController.js # Logique métier de l'import Figma
│ │ └─ exportController.js # Logique métier de l’export
│ ├─ app.js # Configuration de l'application Express
│ └─ server.js # Point d’entrée du serveur
├─ .env # Variables d'environnement
├─ package.json # Dépendances & scripts NPM
└─ README.md # Documentation du projet
```

---

## ⚙️ Installation

1. **Cloner le projet**
## 📁 Project Structure

```bash
git clone <repo_url>
cd api-express
```

2. **Installer les dépendances**

```bash
npm install
src/
├── controllers/ # Route handlers
├── routes/ # Express route definitions
├── middlewares/ # Custom middleware
├── models/ # Database models
├── utils/ # Helper functions
├── config/ # Configuration files
├── app.js # Express app setup
└── server.js # Server entry point
```

---
## 🛠 Available Scripts

## 🚦 Lancer l’API
- `npm run dev` - Start development server with ts-node and nodemon
- `npm run build` - Compile TypeScript to JavaScript
- `npm start` - Start production server (requires build first)
- `npm run type-check` - Run TypeScript type checking
- `npm test` - Run tests (not configured yet)
- `npm run lint` - Run ESLint (not configured yet)

### Mode développement (auto-restart avec nodemon)
## 🔗 API Endpoints

```bash
npm run dev
```
### Health Check
- `GET /api/health` - Get API health status

### Mode production
### Code Generation
- `POST /api/codegen` - Generate code from prompt

```bash
npm start
```

Le serveur sera disponible par défaut sur :
👉 `http://localhost:5000`

---
### Figma Integration (Coming Soon)
- `POST /api/figma/import` - Import Figma designs

## 🔑 Configuration
### Export (Coming Soon)
- `POST /api/export` - Export generated projects

Créer un fichier `.env` à la racine du projet pour stocker les variables d’environnement :
## 🌍 Environment Variables

```
```env
PORT=5000
FIGMA_API_KEY=your_figma_api_key_here
NODE_ENV=development
DATABASE_URL=
OPENAI_API_KEY=
ANTHROPIC_API_KEY=
FIGMA_CLIENT_ID=
FIGMA_CLIENT_SECRET=
JWT_SECRET=
```

---
## 🔧 Middleware Stack

## 📌 Endpoints disponibles
- **Helmet** - Security headers
- **CORS** - Cross-origin resource sharing
- **Morgan** - HTTP request logging
- **Express.json** - JSON body parsing
- **Custom Error Handler** - Centralized error handling

| Méthode | Endpoint | Description |
| ------- | ------------------- | ------------------------------------ |
| POST | `/api/codegen` | Générer du code à partir d’un prompt |
| POST | `/api/figma/import` | Importer des données depuis Figma |
| GET | `/api/export` | Exporter un projet ou un fichier |
## 📝 Development Notes

---
- **TypeScript** with strict type checking
- **ES2020** target with CommonJS modules
- Environment-based configuration with dotenv
- Structured error handling with custom types
- Request logging in development (Morgan)
- Graceful shutdown handling
- Type-safe API responses and requests

## 🛠 Scripts utiles
## 🤝 Contributing

Dans le fichier `package.json`, les scripts suivants sont disponibles :

```json
"scripts": {
"start": "node src/server.js",
"dev": "nodemon src/server.js"
}
```
See the main project [CONTRIBUTING.md](../../CONTRIBUTING.md) for guidelines.

---

✨ Tu es prêt à développer et étendre ton API !

---
**Built with ❤️ by Rwanda Dev Community**
6 changes: 6 additions & 0 deletions apps/api/nodemon.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"watch": ["src"],
"ext": "ts,json",
"ignore": ["src/**/*.test.ts"],
"exec": "ts-node ./src/server.ts"
}
38 changes: 24 additions & 14 deletions apps/api/package.json
Original file line number Diff line number Diff line change
@@ -1,25 +1,35 @@
{
"name": "api",
"name": "@promptly/api",
"version": "1.0.0",
"description": "",
"main": "index.js",
"description": "StackGenie Express API - AI-powered fullstack app generator",
"main": "dist/server.js",
"scripts": {
"start": "node src/server.js",
"dev": "nodemon src/server.js",
"test": "echo \"Error: no test specified\" && exit 1"
"build": "tsc",
"start": "node dist/server.js",
"dev": "nodemon --exec ts-node src/server.ts",
"dev:watch": "nodemon src/server.ts",
"test": "echo \"Error: no test specified\" && exit 1",
"lint": "eslint src/**/*.ts",
"type-check": "tsc --noEmit"
},
"keywords": [],
"author": "",
"license": "ISC",
"keywords": ["express", "api", "ai", "codegen", "stackgenie", "typescript"],
"author": "Rwanda Dev Community",
"license": "MIT",
"packageManager": "pnpm@10.14.0",
"dependencies": {
"body-parser": "^2.2.0",
"express": "^4.18.2",
"cors": "^2.8.5",
"dotenv": "^17.2.1",
"express": "^5.1.0",
"install": "^0.13.0"
"dotenv": "^16.3.1",
"morgan": "^1.10.0",
"helmet": "^7.1.0"
},
"devDependencies": {
"nodemon": "^3.1.10"
"@types/express": "^4.17.21",
"@types/cors": "^2.8.17",
"@types/morgan": "^1.9.9",
"@types/node": "^20.10.5",
"typescript": "^5.3.3",
"ts-node": "^10.9.2",
"nodemon": "^3.0.2"
}
}
24 changes: 0 additions & 24 deletions apps/api/src/app.js

This file was deleted.

Loading