Backend para gestionar ideas, comentarios y votos construido con Express, Drizzle ORM y PostgreSQL.
- Node.js ≥ 22
- npm
- PostgreSQL ≥ 14
- Git (opcional)
1️⃣ Clonar repositorio
git clone https://github.com/NekeritStudio/Idea_Board.git
cd Idea_Board2️⃣ Instalar dependencias
npm install3️⃣ Configurar variables de entorno
Crea un archivo .env basado en .env.example:
DATABASE_URL=postgresql://root:password@localhost:3308/ideaboard
PORT=5000Ajusta
root,passwordy3308según tu configuración.
Crear base de datos y usuario
CREATE DATABASE ideaboard;
CREATE USER root WITH PASSWORD 'password';
GRANT ALL PRIVILEGES ON DATABASE ideaboard TO root;Crear tablas
CREATE TABLE ideas (
id SERIAL PRIMARY KEY,
author VARCHAR(100) NOT NULL,
title VARCHAR(255) NOT NULL,
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
);
CREATE TABLE comments (
id SERIAL PRIMARY KEY,
idea_id INTEGER REFERENCES ideas(id) ON DELETE CASCADE NOT NULL,
author VARCHAR(100) NOT NULL,
text TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
);
CREATE TABLE votes (
id SERIAL PRIMARY KEY,
idea_id INTEGER REFERENCES ideas(id) ON DELETE CASCADE NOT NULL,
username VARCHAR(100) NOT NULL,
vote_type VARCHAR(10) NOT NULL CHECK (vote_type IN ('up', 'down')),
UNIQUE(idea_id, username)
);Importar datos (opcional)
pg_dump -U root -p 3308 ideaboard > ideaboard.sql
psql -U root -p 3308 ideaboard < ideaboard.sqlnpm run devEl servidor se ejecutará en
http://localhost:5000.
Ver endpoints
| Emoji | Método | Endpoint | Descripción |
|---|---|---|---|
| 💡 | GET | /api/ideas |
Obtener todas las ideas |
| ✏️ | POST | /api/ideas |
Crear una nueva idea |
| 👍👎 | POST | /api/vote |
Votar una idea |
| 💬 | GET | /api/comments/:ideaId |
Obtener comentarios de una idea |
| 📝 | POST | /api/comments |
Crear un comentario |
| 📊 | GET | /api/statistics |
Obtener estadísticas |
- Ajusta el
.envsi trabajas en otro equipo. - Recomendado actualizar Browserslist:
npx update-browserslist-db@latestDATABASE_URL: URL de conexión a PostgreSQLPORT: puerto donde correrá el servidor (por defecto5000)
/server
├─ db.ts # Configuración de la base de datos
├─ storage.ts # Acceso a ideas, votos, comentarios
├─ routes.ts # Endpoints de la API
└─ index.ts # Entrada principal del servidor
/shared
└─ schema.ts # Esquemas Zod y Drizzle ORM
.env
package.json
- Clona o copia el proyecto
- Instala dependencias (
npm install) - Configura
.envcon tuDATABASE_URL - Crea las tablas en PostgreSQL
- Ejecuta
npm run dev
MIT License © 2025
- Haz un fork del proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
¡Gracias a todos los que colaboran en este proyecto! Puedes añadir tu nombre aquí: