Self-taught dev from Aflou, Laghouat — Algeria. I started messing with code in 2016, wasn't serious about it. By 2019 I was fully committed — writing every day, shipping real things, not just tutorials.
In 2025 I launched Ras El Hanout DZ, a competitive CS2 server for Algerian players. I run the whole thing solo — the Linux VPS, MariaDB schemas, the full CounterStrikeSharp plugin suite, PHP web panels, and whatever breaks at 2am when 30 players are online.
Stack is wide because the job demands it. C# for CS2, Java for old Minecraft work, PHP/Laravel for web tools, Dart/Flutter for mobile, Bash for automation, HTML, CSS, JavaScript when the frontend needs attention.
Not looking for work. Building things people actually use.
server → 2.27.234.85:27015
discord → discord.gg/BFYt3YU8KG
email → aouiff123@gmail.com
status → building
2016 ── First contact with code
└─ Discovered Java trying to understand how Minecraft plugins work
Inconsistent, mostly curiosity. Not yet serious.
2017 ── Started writing actual code
└─ Small Spigot experiments — learning event listeners, basic commands
Still not disciplined. Weeks of nothing, then a burst of progress.
2018 ── First real plugin — Nexus (Minecraft)
└─ Full faction system: dynamic economy, political simulation,
influence heatmaps, ideology evolution, async market engine,
O(1) chunk indexing. The project that made me take this seriously.
2019 ── Fully committed — writing every day
└─ Learned Linux, server ops, VPS management, MySQL
Started understanding how real systems work under the surface
2020 ── PHP & web tooling
└─ Custom panels for player management, ban systems, server stats
First time connecting a backend to a proper database schema
2021 ── Dart & Flutter
└─ PS4 Lounge Manager — session tracking, timers, match history
Deployed offline in a real gaming lounge. First shipped mobile app.
2022 ── CS2 drops — full pivot to CounterStrikeSharp / C#
└─ Rebuilt everything I knew from Spigot but in .NET 8
Learned the CSS# framework from scratch, no documentation yet
2023 ── Built the full Ras El Hanout DZ plugin suite
└─ AntiDLL, Duel system, WeaponPaints, Graffiti, early VIPCore
First time running a real server with real Algerian players
2024 ── Architecture got serious
└─ Moved from simple plugins to event sourcing, saga patterns,
PID-controlled economy (CentralBank), bounty order books
Started DOMINION — the biggest thing I've built
2025 ── Launched Ras El Hanout DZ publicly
└─ VIPCore Maximus Edition v4.0 — full credits economy,
Discord webhooks, Quake kill announcer overhaul
CS2 Loadout Studio web app v3 redesign
DOMINION architecture — skill trees, federation, observability
now ── Still in it
└─ DOMINION in progress. Server active. Writing code daily.
C# / CounterStrikeSharp ████████████████████ 95% main language since CS2 launch
Java / Spigot ████████████████░░░░ 80% where it started — still solid
SQL / MariaDB ███████████████░░░░░ 75% every project has a database
PHP / Laravel ██████████████░░░░░░ 70% web panels and APIs
Linux / Bash ██████████████░░░░░░ 70% daily server ops
HTML / CSS / JS █████████████░░░░░░░ 65% frontend when needed
Dart / Flutter ████████████░░░░░░░░ 60% one real deployed mobile app
Docker ██████████░░░░░░░░░░ 50% containerised select services
Auto-updated daily via GitHub Actions — shows real coding time per language
How to set up WakaTime stats
- Sign up at wakatime.com
- Install the extension in VS Code or Rider
- Add
WAKATIME_API_KEYandGH_TOKENto repo secrets - Create
.github/workflows/waka-readme.yml:
name: WakaTime Stats
on:
schedule:
- cron: "0 0 * * *"
workflow_dispatch:
jobs:
update-readme:
runs-on: ubuntu-latest
steps:
- uses: athul/waka-readme@master
with:
WAKATIME_API_KEY: ${{ secrets.WAKATIME_API_KEY }}
GH_TOKEN: ${{ secrets.GH_TOKEN }}
SHOW_TITLE: true
TIME_RANGE: last_7_days
SHOW_TIME: true
LANG_COUNT: 10
IGNORED_LANGUAGES: YAML JSON TOML Binary┌─────────────────────────────────────────────────────────────────┐
│ Ras El Hanout DZ — OVH VPS │
│ Ubuntu 24.04 · Pterodactyl · Cloudflare │
├─────────────────────────────────────────────────────────────────┤
│ │
│ CounterStrikeSharp — .NET 8 │
│ │ │
│ ├── VIPCore Maximus Edition v4.0 │
│ │ ├── Credits economy & transfer system │
│ │ ├── Per-round shop & cosmetic menus │
│ │ ├── HP regen · spawn protection · playtime tracking │
│ │ ├── Quake kill announcer │
│ │ └── Discord webhooks │
│ │ │
│ ├── RasElHanout AntiDLL │
│ │ └── Confidence scoring · false-positive reduction │
│ │ │
│ ├── RasElHanout Duel │
│ │ └── 1v1 arena · challenge system · zero admin required │
│ │ │
│ ├── WeaponPaints Suite ─────────────────────────────────┐ │
│ │ └── Skins · gloves · knives · agents · stickers │ │
│ │ │ │
│ ├── RasElHanout Graffiti ───────────────────────────┐ │ │
│ │ └── Website-linked · slots · weekly limits │ │ │
│ │ │ │ │
│ └── DOMINION (in progress) │ │ │
│ ├── CentralBank — PID-controlled economy │ │ │
│ ├── Bounty order book │ │ │
│ ├── Skill trees │ │ │
│ ├── Federation with leader election │ │ │
│ └── Full observability layer │ │ │
│ │ │ │
├──────────────────────────────────────────────────────┘───┘ │
│ MariaDB ── persistent layer for every plugin │
│ Nginx + PHP/Laravel ── web panel & loadout studio │
│ Cloudflare ── DNS · CDN · DDoS protection │
└─────────────────────────────────────────────────────────────────┘
|
CS2 server launched in 2025. Algerian competitive community. I run the whole thing solo — Linux, DB, plugin suite, web tooling, admin workflow, backups. When it crashes at 2am I fix it.
Custom anticheat with confidence scoring. Built because off-the-shelf solutions had too many false positives on a live competitive server.
1v1 arena. Players challenge each other directly. Clean round flow, no admin involvement required.
Full cosmetics ecosystem. Skins, gloves, knives, agents, music kits, stickers. Per-player MariaDB loadouts with a PHP web panel.
RasElHanout Graffiti — PublicWebsite-linked in-game graffiti selector. Player slots, weekly limits, VIP and admin tools. Open source.
|
Full VIP plugin. Credits economy, transfers, per-round shop, HP regen, spawn protection, playtime tracking, Quake kill announcer, Discord webhooks. Iterated from v3.0.0 all the way to v4.0.0.
Old Reload System — PublicRestores pre-update CS2 reload and reserve ammo behavior. Small, clean, still used on other servers.
Laravel admin tooling. Player management, skin panels, ban/kick workflow, server stats.
Flutter mobile app for a physical gaming lounge. Sessions, match counters, timers, history. Runs 100% offline on a real tablet.
Enterprise CS2 meta-plugin. Event sourcing, PID-controlled economy, bounty order books, skill trees, federation with leader election, observability. The main project right now.
Full Spigot faction plugin. Dynamic economy, political simulation, influence heatmaps, ideology evolution, async market ticks, O(1) chunk indexing. Not maintained. Still the project that made me serious.
|
OS Ubuntu 24.04 LTS (server) · Windows 11 (dev machine)
Editors VS Code (daily) · JetBrains Rider (heavy C# and .NET work)
Terminal Windows Terminal + SSH into VPS
Database MariaDB — on every project, no exceptions
Game panel Pterodactyl
VPS OVH — French datacenter, best option from Algeria latency-wise
CDN / DNS Cloudflare
Source GitHub — everything versioned, nothing lost
CS2 server 2.27.234.85:27015
Contribution snake — runs every 12 hours
# .github/workflows/snake.yml
name: Generate Snake
on:
schedule:
- cron: "0 */12 * * *"
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: Platane/snk/svg-only@v3
with:
github_user_name: ${{ github.repository_owner }}
outputs: |
dist/github-contribution-grid-snake.svg
dist/github-contribution-grid-snake-dark.svg?palette=github-dark
- uses: crazy-max/ghaction-github-pages@v3
with:
target_branch: output
build_dir: dist
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}