API de EXDEV Club para consultar información almacenada en Notion y proporcionar los datos utilizados por la aplicación web.
La API está desarrollada con Hono + TypeScript y está preparada para ejecutarse localmente y desplegarse posteriormente en Cloudflare Workers.
- TypeScript
- Hono
- Cloudflare Workers
- Wrangler
- Notion API
Actualmente la API permite consultar información de:
- Miembros de EXDEV Club
- Fotografías de miembros
- Proyectos
- Estado de proyectos
- Áreas de proyectos
- Responsables de proyectos
La API también aplica filtros para determinar qué miembros y proyectos deben mostrarse públicamente.
La aplicación web se comunica con esta API y la API se comunica con Notion.
Web
│
│ HTTP
▼
Hono / Cloudflare Workers
│
│ HTTPS
▼
Notion API
El token de Notion se mantiene en el entorno de la API y no debe exponerse en la aplicación web.
Necesitas tener instalado:
- Node.js
- npm
Puedes comprobarlo con:
node --version
npm --versionClona el repositorio:
git clone <URL_DEL_REPOSITORIO>Entra en la carpeta:
cd API-exdev-webInstala las dependencias:
npm installLa API necesita las siguientes variables:
NOTION_TOKEN=
NOTION_DATA_SOURCE_ID=
NOTION_PROJECTS_DATA_SOURCE_ID=Para ejecutar la API localmente se utiliza el archivo:
.dev.vars
Ejemplo:
NOTION_TOKEN=tu_token
NOTION_DATA_SOURCE_ID=tu_data_source_id
NOTION_PROJECTS_DATA_SOURCE_ID=tu_projects_data_source_idLos valores reales deben mantenerse privados.
No subir nunca a GitHub:
.env
.dev.vars
node_modules/
.wrangler/
El token de Notion es una credencial privada y no debe escribirse directamente en el código fuente.
Instala las dependencias:
npm installInicia el entorno de desarrollo:
npm run devWrangler iniciará la aplicación localmente.
La dirección exacta aparecerá en la terminal al iniciar el servidor.
Para comprobar que no existen errores de tipos:
npm run typecheckComprueba que la API está funcionando.
Respuesta:
{
"message": "API ExDev funcionando"
}Obtiene los miembros de EXDEV Club desde Notion.
Ejemplo:
GET /miembrosObtiene los proyectos de EXDEV Club desde Notion.
Ejemplo:
GET /proyectosDurante el desarrollo local, la API permite solicitudes desde:
http://localhost:3000
Esta configuración deberá revisarse para producción cuando la aplicación web tenga su dominio definitivo.
API-exdev-web/
├── src/
│ ├── index.ts
│ └── notion.ts
├── public/
├── package.json
├── package-lock.json
├── tsconfig.json
├── wrangler.jsonc
├── .gitignore
└── README.md
.dev.varses un archivo local y no debe subirse al repositorio.
Para ejecutar la API en otro ordenador:
- Clonar el repositorio.
- Instalar las dependencias con
npm install. - Crear un archivo
.dev.vars. - Configurar las variables de Notion.
- Ejecutar
npm run dev.
El repositorio contiene el código de la API, pero las credenciales de Notion no forman parte del repositorio.
Por lo tanto, una persona que clone el proyecto necesitará configurar sus propias credenciales de desarrollo para que las consultas a Notion funcionen localmente.
El proyecto está preparado para utilizar Cloudflare Workers mediante Wrangler.
Para desplegar:
npm run deployLas credenciales de producción deben configurarse de forma segura en Cloudflare y no almacenarse dentro del repositorio.
npm run devnpm run typechecknpm run deployLa API utiliza una integración de Notion para acceder a los Data Sources utilizados por el proyecto.
Variables utilizadas:
| Variable | Descripción |
|---|---|
NOTION_TOKEN |
Token de autenticación de Notion |
NOTION_DATA_SOURCE_ID |
Data Source utilizado para los miembros |
NOTION_PROJECTS_DATA_SOURCE_ID |
Data Source utilizado para los proyectos |
La integración debe tener permisos suficientes sobre los recursos de Notion utilizados por la API.
🚧 En desarrollo
La API funciona actualmente en entorno local y utiliza Hono y TypeScript.
El siguiente objetivo es desplegarla en Cloudflare Workers y conectarla con la versión de producción de la aplicación web.
Nunca almacenar en Git:
- Tokens de Notion
- Contraseñas
- Claves privadas
- Secretos de Cloudflare
- Archivos
.env - Archivos
.dev.vars
Las credenciales deben mantenerse en variables de entorno o secrets del entorno correspondiente.
Proyecto privado de EXDEV Club.