FloCafe
FloCafe는 구독 없이 무료로 주문·테이블·주방 디스플레이·로컬 데이터를 관리하는 로컬 퍼스트 레스토랑 POS입니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Monte seu PC com preços em reais, lojas brasileiras e verificação de compatibilidade · PC builder for Brazil
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Português · English
Monte seu PC com preços em reais, links para lojas brasileiras e verificação de compatibilidade entre as peças.
Demo: https://custompc-builder.vercel.app · montar um PC
checkBuild
do servidor, então cada regra existe uma vez só./montar?cpu=…&ram=…*2): link compartilhável,
renderizado no servidor, um único link por build.PriceProvider separa este
repositório de um pacote privado com coletores de preço reais e IDs de
afiliado. Os provedores rodam num job agendado, nunca durante a
requisição.| Desktop | Celular |
|---|---|
Os montadores de PC mais conhecidos mostram preços em dólar e lojas dos EUA. Quem monta um PC no Brasil precisa comparar preços em reais entre Amazon, Mercado Livre, KaBuM!, Pichau, Terabyte e outras lojas, e ainda conferir se as peças funcionam juntas. O custompc junta as duas coisas.
Next.js 16 (App Router, Cache Components) · React 19 · TypeScript (strict) · Tailwind CSS 4 · PostgreSQL 18 · Prisma 7 · Zod · Vitest · Playwright + axe · GitHub Actions · Vercel · Neon
flowchart LR
ui["Páginas Next.js<br/>catálogo, peça, /montar"] --> server["src/server<br/>Prisma"]
ui --> builder["src/builder<br/>URL da build, preços"]
builder --> domain
server --> domain["src/domain<br/>schemas, regras, dinheiro"]
sync["prices:sync<br/>job diário"] --> pricing["src/pricing<br/>PriceProvider"]
pricing --> domain
pricing -. "pacote privado<br/>(coletores reais)" .-> private[("lojas")]
server --> db[("Postgres")]
pricing --> db
src/domain): schemas das peças, regras de
compatibilidade, estimativa de consumo, dinheiro em centavos e validade
das ofertas. Não importa Next.js, React nem Prisma; o ESLint garante.src/pricing): o prices:sync carrega os provedores
listados em PRICE_PROVIDERS, valida cada oferta com Zod e grava em lote.
As páginas só leem do banco. Preços de referência conferidos à mão entram
por prices:import de uma planilha CSV (exemplo fictício em
data/prices.example.csv) e sempre vencem os preços ilustrativos do seed.<Suspense>, então o build não precisa de banco.Detalhes, diagramas e como escrever um provedor privado: docs/architecture.md. Regras de compatibilidade: docs/compatibility.md. Decisões e seus motivos: docs/STATUS.md.
| O quê | Quando | Como |
|---|---|---|
| App | push no main | Vercel (gru1, São Paulo) |
| Migrations | todo deploy | vercel-build → prisma migrate deploy |
| Previews | push em outra branch | banco próprio: branch preview/<git-branch> |
| Catálogo | à mão, quando o seed muda | workflow "Seed production" |
| Preços (demo) | todo dia | workflow "Price sync" |
O banco é Postgres no Neon (sa-east-1). Deploys nunca rodam o seed, e um
preview nunca roda migrations no banco de produção. Detalhes em
docs/architecture.md.
Requisitos: Node.js 24, npm e Docker (com Docker Compose).
npm install # também gera o Prisma Client
cp .env.example .env # conexão com o Postgres local
npm run db:up # sobe o Postgres 18 no Docker
npm run db:deploy # aplica as migrations
npm run db:seed # carrega as peças de exemplo (pode rodar de novo)
npm run dev # http://localhost:3000
O Postgres do Docker usa a porta 5432. Se ela estiver ocupada (por
exemplo, por um Postgres instalado na máquina), defina POSTGRES_PORT no
.env (ex.: 5433) e use a mesma porta no DATABASE_URL.
npm run db:reset recomeça do zero; npm run db:down para o banco (os
dados ficam no volume custompc-db).
Os preços do seed são ilustrativos. As specs são reais, e cada peça guarda a página do fabricante de onde vieram (docs/architecture.md).
npm run lint && npm run format:check && npm run typecheck
npm test # unitários (Vitest)
npm run test:e2e # E2E + acessibilidade (Playwright + axe)
O test:e2e precisa só do Postgres do db:up. Ele faz o build, recria um
banco custompc_test no mesmo servidor (migrations, seed e ofertas
envelhecidas) e sobe os próprios servidores nas portas 3100 e 3101; o banco
de desenvolvimento não é tocado.
| Comando | O que faz |
|---|---|
npm run dev | Servidor de desenvolvimento |
npm run lint | ESLint |
npm run typecheck | Checagem de tipos do TypeScript |
npm test | Testes unitários (Vitest) |
npm run test:e2e | Testes E2E e de acessibilidade (Playwright + axe) |
npm run screenshots | Gera os screenshots em docs/screenshots |
npm run demo:media | Grava o GIF e o vídeo do montador (precisa do ffmpeg) |
npm run format | Formata o código com Prettier |
npm run db:up | Sobe o Postgres (Docker) |
npm run db:deploy | Aplica as migrations |
npm run db:migrate | Cria uma migration (desenvolvimento) |
npm run db:seed | Carrega os dados de exemplo |
npm run db:reset | Recria o banco e roda o seed |
npm run prices:sync | Atualiza as ofertas a partir dos provedores de preço |
npm run prices:import -- arquivo.csv | Importa preços de referência conferidos à mão |
npm run prices:template -- --parts … | Gera a planilha em branco para o prices:import |
Pendências conhecidas: a lista de CPUs suportadas por cada placa (para o aviso de atualização de BIOS) precisa ser conferida à mão, porque os fabricantes bloqueiam acesso automatizado; e há uma oferta por loja por peça, uma limitação para marketplaces com vários vendedores.
Build your PC with prices in Brazilian reais (R$), links to Brazilian stores and compatibility checks between parts.
Demo: https://custompc-builder.vercel.app · build a PC (the UI is in Portuguese).
checkBuild
as the server, so every rule exists once./montar?cpu=…&ram=…*2):
shareable, server-rendered, exactly one link per build.PriceProvider interface separates this
repo from a private package with real price collectors and affiliate ids.
Providers run in a scheduled job, never during a request.Well-known PC builders show prices in US dollars and US stores. People building a PC in Brazil need to compare prices in reais across Amazon, Mercado Livre, KaBuM!, Pichau, Terabyte and other stores, and still check that the parts work together. custompc does both.
A pure domain layer (src/domain) holds part schemas, compatibility rules,
the power estimate, money in integer cents and offer freshness, with no
Next.js, React or Prisma imports (ESLint enforces it). src/pricing loads
the providers listed in PRICE_PROVIDERS, validates each offer with Zod
and writes in batches; pages only read offers from the database. Specs live
in one Zod-validated JSON column instead of a table per category. Anything
that reads the database, the URL or the clock streams inside <Suspense>,
so the build needs no database. See the diagram above,
docs/architecture.md,
docs/compatibility.md and the decision log in
docs/STATUS.md.
Pushes to main deploy to Vercel (gru1); the database is Postgres on Neon
(sa-east-1). Every deploy runs prisma migrate deploy and never seeds.
Each preview gets its own Neon branch preview/<git-branch>, and a check in
vercel-build keeps previews from migrating production. The catalog is
loaded by the "Seed production" workflow; the "Price sync" workflow
refreshes the example prices daily.
Requirements: Node.js 24, npm and Docker (with Docker Compose).
npm install # also generates the Prisma Client
cp .env.example .env # local Postgres connection
npm run db:up # starts Postgres 18 in Docker
npm run db:deploy # applies the migrations
npm run db:seed # loads the example parts (safe to re-run)
npm run dev # http://localhost:3000
Docker's Postgres listens on host port 5432; if it is taken, set
POSTGRES_PORT in .env (e.g. 5433) and use the same port in
DATABASE_URL. Seed prices are illustrative; part specs are real.
Reference prices checked by hand come from a CSV spreadsheet through
npm run prices:import -- file.csv (fictitious example in
data/prices.example.csv) and always outrank the illustrative ones.
npm test runs the unit tests (Vitest). npm run test:e2e builds the app,
recreates a custompc_test database next to the Docker Postgres
(migrations, seed, aged offers) and runs Playwright with axe against its own
servers on ports 3100 and 3101; the development database is never touched.
The scripts table above lists the rest.