{"id":26645919,"url":"https://github.com/vpsi-vsb-2025/vpsiproject","last_synced_at":"2026-04-06T09:32:49.878Z","repository":{"id":282950040,"uuid":"942175597","full_name":"VPSI-VSB-2025/vpsiproject","owner":"VPSI-VSB-2025","description":"System pro nemocnice ","archived":false,"fork":false,"pushed_at":"2025-03-24T20:50:22.000Z","size":553,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-24T21:29:49.363Z","etag":null,"topics":["fastapi","fullstack","github-actions","nextjs","python","typescript"],"latest_commit_sha":null,"homepage":"https://nemocnice.netlify.app/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/VPSI-VSB-2025.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-03T17:37:35.000Z","updated_at":"2025-03-24T20:50:26.000Z","dependencies_parsed_at":"2025-03-17T20:49:59.241Z","dependency_job_id":null,"html_url":"https://github.com/VPSI-VSB-2025/vpsiproject","commit_stats":null,"previous_names":["vpsi-vsb-2025/vpsiproject"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VPSI-VSB-2025%2Fvpsiproject","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VPSI-VSB-2025%2Fvpsiproject/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VPSI-VSB-2025%2Fvpsiproject/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VPSI-VSB-2025%2Fvpsiproject/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/VPSI-VSB-2025","download_url":"https://codeload.github.com/VPSI-VSB-2025/vpsiproject/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245366201,"owners_count":20603439,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fastapi","fullstack","github-actions","nextjs","python","typescript"],"created_at":"2025-03-24T22:46:43.609Z","updated_at":"2025-12-30T20:34:13.003Z","avatar_url":"https://github.com/VPSI-VSB-2025.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# System pro nemocnice\n\n## 🛠 Front-end Stack\n\n### **1️⃣ Základní technologie**\n\n- **[Next.js](https://nextjs.org/)** – SSR, ISR, SSG, optimalizace obrázků, SEO-friendly\n- **TypeScript**\n\n### **2️⃣ API komunikace \u0026 Stavová správa**\n\n- **[TanStack Query (React Query)](https://tanstack.com/query/latest/)** – Fetchování dat, caching, synchronizace\n- **[Zustand](https://github.com/pmndrs/zustand)** – Jednoduchý state management\n- **[Axios](https://github.com/axios/axios)** – Lepší než FetchAPI\n\n### **3️⃣ UI komponenty \u0026 Styling**\n\n- **[shadcn/ui](https://ui.shadcn.com/)** – Pěkné, přizpůsobitelné komponenty\n- **[Tailwind CSS](https://tailwindcss.com/)** – Styling\n\n### **4️⃣ Formuláře \u0026 Validace**\n\n- **[React Hook Form](https://react-hook-form.com/)** – Knihovna pro práci s formuláři\n- **[Zod](https://zod.dev/)** – Validace dat s podporou TypeScriptu\n\n### **5️⃣ Autentizace \u0026 Autorizace**\n\n- **[Clerk](https://clerk.dev/)** – Řešení pro autentizaci v Next.js\n\n### **6️⃣ Ikony \u0026 Grafy**\n\n- **[lucide-react](https://lucide.dev/)** – Sada ikon\n- **[Recharts](https://recharts.org/en-US/)** – Interaktivní grafy a vizualizace\n\n### **7️⃣ Další nástroje**\n\n- **ESLint \u0026 Prettier** – Linting a formátování kódu\n- **PNPM** – Rychlejší a efektivnější správce balíčků než npm/yarn\n\n## 🛠 Back-end Stack\n\n### **1️⃣ Základní technologie**\n\n- **[Python](https://www.python.org/)** – Jazyk pro backend\n- **[FastAPI](https://fastapi.tiangolo.com/)** – Framework pro tvorbu REST API\n- **[Uvicorn](https://www.uvicorn.org/)** – ASGI server pro běh FastAPI aplikace\n\n### **2️⃣ Databáze \u0026 ORM**\n\n- **[PostgreSQL](https://www.postgresql.org/)** – Relační databáze\n- **[SQLAlchemy](https://www.sqlalchemy.org/)** – ORM pro práci s databází\n- **[Alembic](https://alembic.sqlalchemy.org/)** – Migrace databáze\n\n### **3️⃣ Validace \u0026 Serializace**\n\n- **[Pydantic](https://docs.pydantic.dev/)** – Validace vstupních dat a datové modely\n\n### **4️⃣ Testování**\n\n- **[Pytest](https://docs.pytest.org/en/stable/)** – Testovací nástroj pro backend\n\n### **5️⃣ Nasazení**\n\n- **[Render](https://render.com/)** – Nasazení aplikace do cloudu\n\n## 🛠 DB Stack\n\n- **[PostgreSQL](https://www.postgresql.org/)** – je to free\n\n## Front-end - ovládání, spuštění na lokálu\n\n### Předpoklady:\n\n- Nainstalovaný **[Node.js](https://nodejs.org/en)** (verze 18.0.0 nebo vyšší)\n- Nainstalovaný **[PNPM](https://pnpm.io/installation)** (doporučuju verzi 10.x nebo vyšší)\n- Nainstalovaný **[Git](https://git-scm.com/downloads)** pro správu verzí\n\n### Instalace závislostí:\n\n```bash\n# Přejděte do složky projektu\ncd frontend\n\n# Instalace všech závislostí\npnpm install\n```\n\n### Konfigurace prostředí (.env soubor)\n\nVe složce `frontend` vytvořte soubor `.env` s následujícími proměnnými:\n\n```\n# API Endpoints\nNEXT_PUBLIC_API_URL=http://localhost:3000/api\n\n# Clerk Authentication\nNEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_xxxxx\nCLERK_SECRET_KEY=sk_test_xxxxx\n\n# Další konfigurační proměnné\nNEXT_PUBLIC_APP_ENV=development\n```\n\n### Spuštění vývojového serveru:\n\n(ve složce frontend:)\n\n```bash\n# Spuštění vývojového serveru\npnpm dev\n```\n\nPo spuštění bude aplikace dostupná na adrese [http://localhost:3000](http://localhost:3000).\n\n### Vytvoření produkčního buildu:\n\n```bash\n# Vytvoření optimalizované produkční verze\npnpm build\n\n# Spuštění produkční verze\npnpm start\n```\n\n### Struktura složek:\n\n```\nfrontend/\n├── public/              # Statické soubory\n├── src/                 # Zdrojový kód aplikace\n│   ├── app/             # Next.js App Router struktura\n│   │   ├── (auth)/      # Autentizační stránky (přihlášení, registrace)\n│   │   ├── dashboard/   # Sekce pro přihlášené uživatele\n│   │   ├── layout.tsx   # Hlavní layout aplikace\n│   │   └── page.tsx     # Hlavní stránka\n│   ├── components/      # Sdílené komponenty\n│   │   ├── ui/          # UI komponenty (shadcn/ui)\n│   │   ├── forms/       # Formulářové komponenty\n│   │   └── dashboard/   # Komponenty pro dashboard\n│   ├── hooks/           # React hooks\n│   ├── lib/             # Sdílené utility a funkce\n│   │   └── utils.ts     # Pomocné funkce\n│   ├── store/           # Zustand store\n│   ├── types/           # TypeScript typy a definice\n│   └── middleware.ts    # Clerk.js middleware (a další)\n├── .env                 # Lokální proměnné prostředí (není v gitu)\n├── .eslintrc.json       # ESLint konfigurace\n├── .prettierrc          # Prettier konfigurace\n├── next.config.ts       # Next.js konfigurace\n├── package.json         # Závislosti projektu\n├── postcss.config.mjs   # PostCSS konfigurace (pro Tailwind)\n├── tailwind.config.ts   # Tailwind CSS konfigurace\n└── tsconfig.json        # TypeScript konfigurace\n```\n\n## Back-end - Ovládání, spuštění na lokálu\n\n### Předpoklady:\n\n- Nainstalovaný **[Python](https://www.python.org/)** (verze 3.9 nebo vyšší)\n- Nainstalovaný **[Pip](https://pypi.org/project/pip/)** pro instalaci závislostí\n- Nainstalovaný **[Git](https://git-scm.com/downloads)** pro správu verzí\n\n## Instalace závislostí:\n\n```bash\n# Přejděte do složky backend\ncd backend\n\n# Instalace všech závislostí\npip install -r requirements.txt\n```\n\n## Konfigurace prostředí (.env soubor)\n\nVe složce backend vytvořte soubor .env s následujícími proměnnými:\n\n```bash\n# URL pro připojení k PostgreSQL\nDATABASE_URL=neon_db_url_je_na_messengeru\n\n# Tajný klíč pro JWT\nSECRET_KEY=your-secret-key\n\n# Délka platnosti tokenu v minutách\nACCESS_TOKEN_EXPIRE_MINUTES=30\n```\n\n## Spuštění vývojového serveru:\n\n(ve složce backend:)\n\n```bash\n# Spuštění vývojového serveru (z /backend/)\npython -m uvicorn app.main:app --reload\n```\n\nPo spuštění bude aplikace dostupná na adrese http://localhost:8000.\n\nCRUD operace lze testovat na http://localhost:8000/docs/\n\n### Struktura složek:\n\n```\nbackend/\n├── app/\n│   ├── api/             # API routes (endpoints)\n│   │   ├── patients.py\n│   │   ├── doctors.py\n│   │   ├── medical_records.py\n│   │   ├── ...\n│   ├── core/            # Config (databáze, nastavení)\n│   │   ├── config.py\n│   │   ├── database.py\n│   ├── models/          # SQLAlchemy modely\n│   │   ├── patient.py\n│   │   ├── doctor.py\n│   │   ├── medical_record.py\n│   │   ├── ...\n│   ├── schemas/         # Pydantic schémata (validace)\n│   │   ├── patient.py\n│   │   ├── doctor.py\n│   │   ├── medical_record.py\n│   │   ├── ...\n│   ├── services/        # Business logika (např. CRUD operace)\n│   │   ├── patient_service.py\n│   │   ├── doctor_service.py\n│   │   ├── medical_record_service.py\n│   │   ├── ...\n│   ├── main.py          # Hlavní FastAPI aplikace a spuštění\n├── alembic/             # Migrace databáze\n├── tests/               # Pytest testové soubory\n│   ├── test_patients.py\n│   ├── test_doctors.py\n│   ├── test_medical_records.py\n│   ├── ...\n├── .env                 # Proměnné prostředí\n├── requirements.txt     # Závislosti\n```\n\n## Doporučené vývojové nástroje\n\n- **Visual Studio Code** s těmito rozšířeními:\n  - ESLint\n  - Prettier\n  - Tailwind CSS IntelliSense\n  - Python\n\n## Užitečné příkazy\n\n```bash\n# Kontrola frontend kódu pomocí lintera\npnpm lint\n```\n\n```bash\n# Kontrola backend kódu pomocí lintera\nflake8 . --config=.flake8\n```\n\n- O Enviroment variables do souboru `/frontend/.env`, požádejte front-end engineera.\n\n- O Enviroment variables do souboru `/frontend/.env`, požádejte back-end engineera.\n\n## CI/CD Pipeline pro Frontend\n\nNaše CI/CD pipeline pro frontend využívá **GitHub Actions** a zajišťuje automatickou kontrolu kódu před nasazením. Pipeline obsahuje následující kroky:\n\n### 🛠 **CI (Continuous Integration)**\n\n1. **Checkout kódu** – Načte aktuální verzi repozitáře.\n2. **Instalace závislostí** – Používáme `pnpm` pro rychlou a efektivní správu balíčků.\n3. **Typecheck** – Ověřuje správnost TypeScript kódu, aby se předešlo typovým chybám.\n4. **Lint** – Spouští ESLint pro zajištění konzistence kódu.\n\nCI se spouští pouze na **Pull Requesty a commity do `main` branche** a běží pouze pro změny ve složce `frontend/`, což šetří čas i GitHub Actions minuty.\n\n### 🚀 **CD (Continuous Deployment)**\n\nNasazení frontendové aplikace je automatizováno pomocí **GitHub Actions** a **Netlify CLI**.\n\n1. **CD krok**: Po úspěšném dokončení CI pipeline probíhá automatické nasazení, které zahrnuje:\n\n   - Nastavení Node.js prostředí\n   - Instalaci Netlify CLI\n   - Instalaci závislostí pomocí pnpm\n   - Build a nasazení aplikace pomocí Netlify CLI přímo z GitHub Actions\n\nNasazení se spouští automaticky po úspěšném dokončení CI pipeline a pouze při změnách ve složce `frontend/` na `main` větvi.\n\nTímto způsobem zajišťujeme, že kód je vždy správně ověřen a automaticky nasazen do produkčního prostředí. ✅\n\n## CI/CD Pipeline pro Backend\n\nNaše CI/CD pipeline pro backend využívá **GitHub Actions** a zajišťuje automatickou kontrolu kódu, testování a nasazení do produkčního prostředí. Pipeline obsahuje následující kroky:\n\n### 🛠 **CI (Continuous Integration)**\n\n1. **Checkout kódu** – Načte aktuální verzi repozitáře.\n2. **Setup Python** – Nastaví Python 3.10 s cache pro pip balíčky.\n3. **Instalace závislostí** – Nainstaluje všechny potřebné Python balíčky z requirements.txt.\n4. **Migrace databáze** – Spustí Alembic migrace pro přípravu testovací databáze.\n5. **Spuštění testů** – Provede automatické testy pomocí Pytest.\n6. **Lint** – Spouští Flake8 pro kontrolu kvality kódu a dodržování standardů.\n\nCI se spouští pouze na **Pull Requesty a commity do `main` branche** a běží pouze pro změny ve složce `backend/`, což šetří čas i GitHub Actions minuty. Pro testování je použita PostgreSQL databáze, která běží jako služba v rámci workflow.\n\n### 🚀 **CD (Continuous Deployment)**\n\nPo úspěšném dokončení CI pipeline probíhá automatické nasazení:\n\n1. **CD krok**: Spustí se pouze po úspěšném CI a pouze pro `main` větev:\n   - Využívá deploy hook URL k aktivaci automatického nasazení na platformě Render\n   - Curl příkazem se volá deploy hook poskytnutý službou Render\n\nTato automatizace zajišťuje, že kód v produkčním prostředí je vždy otestovaný, splňuje standardy a je nasazený ihned po úspěšném dokončení všech kontrol. ✅\n\n## ❗ Workflow pro přispěvatele ❗\n\n1. Vytvořte novou větev pro váš feature/fix\n2. Napište kód a testy\n3. Ujistěte se, že všechny testy procházejí\n4. Vytvořte pull request do `main` větve\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvpsi-vsb-2025%2Fvpsiproject","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvpsi-vsb-2025%2Fvpsiproject","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvpsi-vsb-2025%2Fvpsiproject/lists"}