TreeMap
무료 오픈소스 디스크 사용량 시각화 도구로, 사각형 트리맵·중복 파일 탐색·디스크 가득 예측·정리 시 파일을 휴지통으로만 이동한다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
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