아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
My application for final paper that has purpose of connecting football clubs and players
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Footynet connects football players and clubs in Croatia's lower leagues (4th tier and below). Clubs post ads for the positions they need to fill. Players apply with their profile and a cover letter. Once a club accepts an application, the two sides can talk in a real-time chat.
I built it as my graduation thesis and kept developing it into a deployed full-stack app: an ASP.NET Core Web API, a Next.js frontend, PostgreSQL, Docker and a GitHub Actions CI/CD pipeline.
https://footynet-ten.vercel.app/
Players
Clubs
Admins
Across the whole platform
| Layer | Technologies |
|---|---|
| Backend | ASP.NET Core 8 Web API, C#, Entity Framework Core 8, Dapper, FluentValidation, SignalR, Serilog, MailKit |
| Frontend | Next.js 15 (App Router), React 19, TypeScript, Tailwind CSS, next-intl, Axios, SignalR client |
| Database | PostgreSQL (EF Core code-first migrations) |
| Auth | JWT bearer tokens, role-based authorization (Player / Club / Admin), BCrypt password hashing |
| Testing | xUnit, Moq |
| DevOps | Docker (multi-stage build), GitHub Actions, Render (API), Vercel (frontend) |
┌──────────────────────┐ REST (JSON) ┌──────────────────────────┐ ┌────────────┐
│ footynet-frontend │ ───────────────▶ │ Footynet.WebApi │ ─────▶ │ PostgreSQL │
│ Next.js / React │ ◀─────────────── │ ASP.NET Core 8 │ └────────────┘
│ │ SignalR (WS) │ │ ─────▶ SMTP (Brevo)
└──────────────────────┘ └──────────────────────────┘ ─────▶ Mapbox API
The backend is a layered solution: Controller → Service → Repository → Data.
| Project | Responsibility |
|---|---|
Footynet.WebApi | Controllers, SignalR hub, validators, middleware, rate limiting, email sending |
Footynet.Service | Business logic, JWT issuing |
Footynet.Repository | Data access with EF Core and hand-written SQL through Dapper |
Footynet.Data | DbContext, migrations, seed data |
Footynet.Model | Entities, DTOs, localized messages (.resx) |
Footynet.Tests | Unit tests |
X-Forwarded-For handling that a client can't spoof.Accept-Language. The API returns errors in a consistent { status, message, code } shape with translated messages. A CI step fails the build if the Croatian and English translation files get out of sync.docker run --name footynet-db -e POSTGRES_PASSWORD=postgres -p 5432:5432 -d postgres:16
cd Footynet/Footynet
cp appsettings.Example.json appsettings.json
Fill in appsettings.json (see Configuration), then run:
dotnet run --launch-profile http
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗