openjutsu
One-click character swap for videos: an open-source, local Higgsfield Genjutsu alternative built on ComfyUI and MiniMax H3, with FLUX.3 Klein relighting.
Ouça música online grátis no radinho.online: milhares de músicas de funk, rap, pop, rock, MPB, sertanejo e trap, rádios ao vivo e podcasts. Sem cadastro, direto no navegador.
Translation pending
MediaTypeScript · JavaScriptGitHub @ChangzaooOnlineOwner 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 ↗Streaming de música profissional — minimal, glass, elegante, rápido.
O radinho.online (aura + aural) é uma plataforma de streaming de música completa e auto-hospedável: você envia seus arquivos de áudio, um pipeline FFmpeg transcodifica tudo para HLS adaptativo, e um player de nível profissional entrega a experiência — crossfade, gapless, equalizador e ReplayGain — em uma interface deep black + glass com um único verde exclusivo.
Web na edge (Vercel) + API em servidor próprio (Docker) = custo mínimo, controle total do áudio.
| Camada | Tecnologia |
|---|---|
| Web | React 19 · Vite · TypeScript · Tailwind · TanStack Query · Zustand · Framer Motion · Howler/Web Audio · vite-plugin-pwa |
| API | Node 22 · Express 5 · Prisma · Zod · socket.io · BullMQ · pino · OpenAPI 3.1 (Swagger em /api/docs) |
| Dados | PostgreSQL 16 · Redis 7 |
| Áudio | FFmpeg (HLS AAC 96/160/320, loudnorm, waveform) · sharp (capas WebP) |
| Auth | Firebase Auth (web SDK + firebase-admin) |
| Storage | Cloudflare R2 (S3) · Supabase Storage · disco local (dev) — via interface StorageProvider |
| Infra | Docker Compose · nginx · PM2 (alternativa bare-metal) · GitHub Actions · Vercel |
| Contrato | @radinho/shared — schemas Zod + DTOs compartilhados entre web e api |
flowchart LR
subgraph Edge
W["apps/web · SPA React<br/>(Vercel)"]
end
subgraph Servidor["Servidor Linux (Docker Compose)"]
N["nginx :80/:443<br/>rate limit · cache HLS"]
A["api :4000<br/>Express 5 · socket.io /ws"]
K["worker<br/>BullMQ · FFmpeg"]
P[("PostgreSQL 16")]
R[("Redis 7")]
end
S[("Storage<br/>R2 / S3 / Supabase")]
F["Firebase Auth"]
W -- "REST /api/v1 · WS /ws" --> N
N --> A
A --> P
A --> R
K --> P
R <--> K
A --> S
K --> S
W -.tokens.-> F
A -.verifica ID token.-> F
Decisões e regras completas em docs/ARCHITECTURE.md · design system em docs/DESIGN.md.
radinho/
├── apps/
│ ├── web/ # SPA React 19 + Vite (Vercel)
│ └── api/ # Node 22 + Express 5 + Prisma (Docker/PM2 no servidor)
├── packages/
│ └── shared/ # @radinho/shared — schemas Zod, DTOs, constantes
├── infra/
│ ├── docker/ # docker-compose.dev.yml (deps locais) · docker-compose.prod.yml (stack completa)
│ ├── nginx/ # reverse proxy de produção (rate limit, WS, cache HLS, TLS)
│ ├── pm2/ # ecosystem.config.cjs (deploy bare-metal alternativo)
│ └── scripts/ # setup-server.sh · deploy-api.sh · backup-db.sh · *.ps1 (Windows)
├── docs/ # ARCHITECTURE · DESIGN · DEPLOY · CONTRIBUTING
└── .github/ # CI + deploys (Actions), templates de PR/issue
.nvmrc) e pnpm 10 (corepack enable resolve)winget install ffmpeg / brew install ffmpeg)# 1. Dependências
pnpm install
# 2. Postgres + Redis locais (projeto docker: radinho-dev)
docker compose -f infra/docker/docker-compose.dev.yml up -d
# 3. Variáveis de ambiente (edite com suas credenciais Firebase)
cp .env.example apps/api/.env # bloco "API"
cp .env.example apps/web/.env.local # bloco "WEB" (VITE_*)
# 4. Banco: migrations + seed
pnpm db:migrate
pnpm db:seed
# 5. Sobe web + api em paralelo
pnpm dev
| Serviço | URL local |
|---|---|
| Web (SPA) | http://localhost:5173 |
| API | http://localhost:4000 |
| Swagger (OpenAPI) | http://localhost:4000/api/docs |
| Healthcheck | http://localhost:4000/healthz |
| PostgreSQL | postgresql://aurial:aurial@localhost:5432/aurial |
| Redis | redis://localhost:6379 |
Sem Docker? Suba Postgres/Redis nativos com o mesmo usuário/senha/banco (
aurial/aurial/aurial) e os mesmos ports — o.env.examplejá aponta para eles.
| Comando | Ação |
|---|---|
pnpm dev | web + api em modo dev (paralelo) |
pnpm dev:web / pnpm dev:api | apenas um dos apps |
pnpm build | build de todos os pacotes |
pnpm lint / pnpm lint:fix | ESLint |
pnpm format / pnpm format:check | Prettier |
pnpm typecheck | tsc --noEmit em todos os pacotes |
pnpm test / pnpm test:coverage | Vitest em todos os pacotes |
pnpm e2e | Playwright (web) |
pnpm --filter @radinho/web android:apk | build web + sync Capacitor + APK debug |
pnpm db:generate / db:migrate / db:seed | Prisma |
Pré-requisitos locais:
JAVA_HOME configurado)ANDROID_HOME ou local.properties em apps/web/android)pnpm --filter @radinho/web android:apk
APK gerado em apps/web/android/app/build/outputs/apk/debug/app-debug.apk.
pnpm testpnpm e2emain roda install → build shared → prisma generate → lint → typecheck → test → build (.github/workflows/ci.yml)Resumo (guia completo em docs/DEPLOY.md):
apps/web, config em apps/web/vercel.json); deploy automático via deploy-web.ymlinfra/docker/docker-compose.prod.yml): postgres + redis + api + worker + nginx; bootstrap com infra/scripts/setup-server.sh, deploy com infra/scripts/deploy-api.sh (ou deploy-from-windows.ps1 da máquina dev)infra/pm2/ecosystem.config.cjsProprietária — todos os direitos reservados. Uso, cópia ou distribuição apenas com autorização expressa. Este repositório não aceita contribuições externas sem convite (veja docs/CONTRIBUTING.md).