Skip to content

stjurik/flatcraft

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

108 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

flatcraft

Безкоштовна онлайн-платформа для проєктування деталей з листового металу і генерації виробничих креслень (DXF + PDF + STEP) — без CAD-навичок.

CI License: MIT Status

Що це таке

Користувач без навичок CAD заходить на сайт, вибирає типовий виріб (L-кронштейн, кутник, полиця, перфо-панель, …), крутить повзунки розмірів і матеріалу, бачить миттєвий 3D-прев'ю і скачує готові DXF + PDF + STEP, з якими можна йти на будь-яке локальне виробництво лазерного різання та гибки.

До 10 експортів на місяць безкоштовно. Далі — добровільний донат від 200 грн на ЗСУ → +1 місяць безкоштовного користування.

Платформа неприбуткова, open source (MIT).

Як це працює

[Browser]
  ├─ Параметрична форма (Next.js + react-three-fiber)
  ├─ 3D-прев'ю в реальному часі (OpenCascade.js)
  └─ Live-валідація проти технологічних обмежень
        ↓
[Fastify API]
  ├─ Auth.js (email + Google OAuth)
  ├─ Лічильник 10 безкоштовних / місяць
  └─ Постановка задачі у чергу (BullMQ)
        ↓
[Python CAD Worker (CadQuery)]
  ├─ Точна розгортка з K-фактором
  ├─ Експорт DXF (з шарами під лазер) + PDF (з ізометрією і BOM) + STEP
  └─ Завантаження у Cloudflare R2
        ↓
[Browser отримує presigned URL → завантаження]

Швидкий старт (локально)

Передумови: Docker (або Docker Desktop), Node.js 20.11+ (через nvm), pnpm 9+ (corepack enable pnpm), Python 3.12 (через uv, потрібен для CAD-воркера — Phase 1+).

# 1. Клон + setup
git clone https://github.com/stjurik/flatcraft.git
cd flatcraft
corepack enable pnpm        # активує pnpm з Node 20+
pnpm install
cp .env.example .env

# 2. Інфраструктура (Postgres 16 + Redis 7 + MinIO + Mailpit)
docker compose up -d
docker compose ps           # усі мають бути healthy

# 3. Міграції + seed (7 матеріалів × 10 товщин + 5 шаблонів)
pnpm db:migrate
pnpm db:seed

# 4. Запуск web + api (cad-worker — Phase 1+)
pnpm dev

Перевірка:

Тести

pnpm typecheck              # tsc --noEmit для всіх workspace
pnpm lint                   # eslint
pnpm test                   # vitest unit + integration
pnpm --filter @flatcraft/web exec playwright test   # e2e (потребує chromium: pnpm exec playwright install chromium)

CI на GitHub Actions проганяє lint + typecheck + test + build + e2e на кожен push та PR.

Документація

Стек

Шар Технологія
Frontend Next.js 15 + TypeScript + react-three-fiber + Tailwind + shadcn/ui
Backend API Fastify + TypeScript + Zod
CAD-engine (browser) OpenCascade.js
CAD-worker (server) Python 3.12 + CadQuery + FastAPI
База даних PostgreSQL 16 + Drizzle ORM
Storage Cloudflare R2 (S3-compatible) / MinIO у dev
Cache & Queue Redis + BullMQ
Auth Auth.js v5
Container Docker + docker-compose
Hosting Mirohost Cloud (тариф MS21: 2 vCPU / 4 GB / 40 GB, ДЦ Київ) + Cloudflare DNS/proxy
Observability Sentry + Plausible
CI/CD GitHub Actions
IaC Ansible (Terraform не використовуємо — Mirohost не має провайдера; див. ADR-011)

Структура

flatcraft/
├── apps/
│   ├── web/              # Next.js
│   └── api/              # Fastify
├── workers/
│   └── cad/              # Python CadQuery
├── packages/
│   ├── cad-engine/       # CAD utilities, validators, k-factor
│   ├── db/               # Drizzle schema + migrations + seed
│   ├── types/            # Zod schemas, shared DTOs
│   └── ui/               # shadcn/ui + custom components
├── infra/
│   ├── docker/
│   ├── compose/
│   └── ansible/          # налаштування Mirohost Cloud сервера
├── docs/                 # ADR, roadmap, data model, …
├── tools/scripts/
├── CLAUDE.md
├── AGENTS.md
└── README.md

Внесок

Проєкт open source, MIT. Ласкаво просимо PR-и, але:

  1. Прочитайте CLAUDE.md і docs/02_ROADMAP.md.
  2. Кожен PR має тести (TDD).
  3. Conventional Commits (feat:, fix:, …).
  4. Squash merge у main.

Discord для координації: (посилання буде після створення сервера)

Соціальна модель

Платформа — соціальний проєкт без юрособи на старті. Усі донати йдуть напряму через офіційні фонди:

  • 🇺🇦 Monobank банка (посилання буде)
  • 🌍 UNITED24

Платформа не виступає одержувачем коштів. Розблокування ліміту після донату — це знак подяки, а не зустрічна послуга.

Ліцензія

MIT — див. LICENSE.


Зроблено для DIY-ентузіастів, малого бізнесу та локальних виробників. Слава ЗСУ.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors