2025ROLE: Full-stack geliştiriciCompleted
CTF Competition Platform
An enterprise-grade Capture The Flag platform on Django 4.2 with teams, dynamic scoring, achievements and detailed analytics.
- ▹Dinamik puanlama + First Blood
- ▹9 zafiyet kategorisi
- ▹Takım + rozet sistemi
- ▹Kurumsal güvenlik sertleştirmesi
- ▹Docker + PostgreSQL + Redis
A full-featured Capture The Flag competition platform I designed for university clubs, corporate security training and CTF programs. Users solve challenges across categories, earn points, form teams and compete on leaderboards.
Highlights
- Season-based competitions with countdown timers.
- Dynamic scoring — the more people solve a challenge, the lower its points drop.
- First Blood tracking, multi-step hints, prerequisite chains.
- Team system, achievements/badges, live solve timeline, admin-approved writeups.
- Analytics: personal dashboard, score charts, category progress, CSV export.
Security focus
A CTF platform is played by attackers, so the platform itself must be hardened: rate limiting on login and flag submission, CSRF on all forms, server-side XSS sanitization, CSP + HSTS + X-Frame-Options + COOP/CORP, no-store on auth pages and a secret-path admin URL.
Stack
Django 4.2, SQLite (dev) / PostgreSQL (prod), Redis cache, multilingual, GitHub-like dark theme, Chart.js. Multi-stage Dockerfile + docker-compose (Postgres + Redis + Nginx) + Gunicorn.
What I learned
Getting dynamic scoring right was harder than expected — instead of freezing points at solve time I built a model that recomputes continuously so historical rankings stay consistent. Prerequisite chains required graph logic to prevent cyclic dependencies.
Content Proof ChainAnchored to Bitcoin
A cryptographic digest of this content was anchored to the Bitcoin blockchain via OpenTimestamps at publish time. You can independently verify the downloaded .ots file at opentimestamps.org or with the 'ots verify' command — mathematically proving the content existed in this exact form at that date.
SHA-256: 396b75fd202236e3d119dabc57a699513ec7c84d2826af4bba7cade7ad90ee55
⬇ Download .ots proofComments
No comments yet. Be the first!