TreeMap
A free, open-source disk-space visualizer. Squarified treemap, duplicate hunting, disk-full forecasting, and cleanup that only ever moves files to the Trash.
Creá tu Video CV o Video Pitch en minutos.
Translation pending
ProductivityTypeScript · CSSGitHub @agustinajaitOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Plataforma web para crear y compartir Video CV y Video Pitch.
Diseñada para talleres de capacitación laboral — el usuario graba su presentación en módulos guiados, el sistema une los fragmentos con FFmpeg y genera una URL pública para compartir.
| Capa | Tecnología |
|---|---|
| Framework | Next.js 14 (App Router) |
| Base de datos | PostgreSQL + Prisma ORM |
| Auth | JWT en cookie HttpOnly (jose) |
| Estilos | Tailwind CSS |
| Tipografías | Fraunces (display) + DM Sans (cuerpo) |
| Procesamiento video | FFmpeg (CLI) |
| Almacenamiento | Local /public/ (reemplazable por S3) |
git clone <repo>
cd oportunai
npm install
cp .env.example .env
Editá .env:
DATABASE_URL="postgresql://postgres:PASSWORD@localhost:5432/oportunai"
JWT_SECRET="clave-secreta-larga-y-aleatoria"
NEXT_PUBLIC_APP_URL="http://localhost:3000"
# Opcional — si ffmpeg no está en el PATH del sistema:
# FFMPEG_PATH="/usr/bin/ffmpeg"
# Crear la base
psql -U postgres -c "CREATE DATABASE oportunai;"
# Aplicar el schema
npm run db:push
# Cargar datos iniciales (módulos CV + Pitch + usuario admin)
npm run db:seed
# Ubuntu / Debian
sudo apt install ffmpeg
# macOS
brew install ffmpeg
# Verificar
ffmpeg -version
npm run dev
# → http://localhost:3000
| Campo | Valor |
|---|---|
[email protected] | |
| Contraseña | Admin1234! |
| Acceso | /admin |
Opción A — Desde psql:
UPDATE "Usuario" SET role = 'admin' WHERE email = '[email protected]';
Opción B — Prisma Studio:
npm run db:studio
# Abre http://localhost:5555
# Tabla Usuario → cambiar role a "admin"
Opción C — Script rápido:
node -e "
const { PrismaClient } = require('@prisma/client');
const p = new PrismaClient();
p.usuario.update({ where: { email: '[email protected]' }, data: { role: 'admin' } })
.then(u => { console.log('Admin:', u.email); p.\$disconnect(); });
"
/register y crear una cuenta/dashboard → clic en "Grabar Video CV"http://localhost:3000/u/{slug}/cvMismo flujo desde "Grabar Video Pitch" → perfil en /u/{slug}/pitch
.mp4/adminnpm run dev # Desarrollo (hot reload)
npm run build # Build de producción
npm run start # Servir build de producción
npm run db:push # Aplicar schema a la DB (sin migraciones)
npm run db:studio # Abrir Prisma Studio (GUI de la DB)
npm run db:seed # Cargar datos iniciales
oportunai/
├── app/
│ ├── page.tsx # Landing
│ ├── layout.tsx # Root layout + metadata global
│ ├── not-found.tsx
│ ├── login/page.tsx
│ ├── register/page.tsx
│ ├── dashboard/
│ │ ├── page.tsx # Server component — carga datos del usuario
│ │ ├── DashboardClient.tsx # Client component — UI del dashboard
│ │ ├── grabar-cv/page.tsx # Carga config Video CV → VideoRecorder
│ │ └── grabar-pitch/page.tsx # Carga config Video Pitch → VideoRecorder
│ ├── admin/
│ │ ├── page.tsx # Server component (solo role=admin)
│ │ └── AdminClient.tsx # Editor de módulos + lista de usuarios
│ ├── u/[slug]/
│ │ ├── cv/page.tsx # Perfil público Video CV + OG tags
│ │ └── pitch/page.tsx # Perfil público Video Pitch + OG tags
│ └── api/
│ ├── auth/{login,register,logout}/
│ ├── users/{me,bio,[slug]/contact}/
│ ├── files/{upload,download}/
│ ├── videos/{upload,merge,download}/
│ └── admin/{config,users}/
├── components/
│ ├── layout/Navbar.tsx # Barra de navegación autenticada
│ └── ui/
│ ├── VideoRecorder.tsx # Componente de grabación (CV y Pitch)
│ └── PublicProfileClient.tsx # Perfil público (CV y Pitch)
├── lib/
│ ├── auth.ts # JWT, sesiones, generador de slug
│ ├── prisma.ts # Cliente Prisma singleton
│ └── validations.ts # Schemas Zod
├── prisma/
│ ├── schema.prisma # Modelos de DB
│ └── seed.js # Datos iniciales
├── styles/globals.css # Estilos globales + variables CSS
├── middleware.ts # Protección de rutas
└── .env.example