✦ Preferences saved
TYRUS
angel@tyrus : ~$ _
// softwarebygger  ·  webhaandvaerker  ·  digital arkitekt
PraecisionsvaerktoejerPraecise vaerktoejer til dem der bygger nettet.
Digital Haandvaerk
tyrus.dk

Freelance webudvikler & softwarebygger — A. Angel Țîru. Skraeddersyede hjemmesider, fejlretning, audits. Ingen WordPress. Ingen skabeloner. Tilgaengelig til projekter. Enkeltfils vaerktoejer uden afhaengigheder — og skraeddersyede hjemmesider der overlever enhver trend. Selvlaert. Obsessiv. Vamdrup, Danmark.

Softwareprodukter
Full-Stack Udvikler
CI4 & PHP
Spilmodder
Numismatiker
0+ Ars Dev
Erfaring
Selvlaert siden 2014
Full-stack PHP & JS
Full-stack PHP & JS
0 Afhaengigheder
Nul oppustethed
Ingen composer
Ingen npm
Ingen database
{ }
0+ Sprog
Syntaksbevidst
PHP, JS, CSS, SQL
Python, Lua, YAML
+ 54 more via CM5
📄
0 Fil. Fuld IDE.
PHP File Manager
476 kB single file
CodeMirror 5 IDE
Upload & koer med det samme
Serverfiler
📁..
📁application
📁assets
📁uploads
📁writable
📄.env0.3kB
📄.htaccess0.4kB
app.js12.1kB
📦backup.zip38.2kB
🌐index.php75.0kB
🌐manager.php476kB
🎨style.css18.3kB
zip-browser.js9.7kB
↑ upload fil (eller traek & slip)
tyrus.dk  /  PHP File Manager v1.0.0
🌐index.php
🌐manager.php
🎨style.css
2515
2516
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
}
// return outside any function - brace depth tracking
$phpLines = explode("\n", $code);
$funcDepths = []; // stack - depth where each function started
$depth = 0; $inString = false; $strChar = '';
foreach ($phpLines as $rli => $rlline) {
    $rltrimmed = trim($rlline);
    if (substr($rltrimmed, 0, 2) === '//' || substr($rltrimmed, 0, 1) === '#') continue;
    $rlen = strlen($rlline); $i = 0;
    while ($i < $rlen) {
        $c = $rlline[$i];
        $next = $rlline[$i+1] ?? '';
        // skip inline comments
        if (!$inString && $c === '/' && $next === '/') break;
        if (!$inString && $c === '#') break;
        // string tracking - don't count braces inside strings
        if (!$inString && ($c === '"' || $c === "'")) {
            $inString = true; $strChar = $c; $i++; continue;
        }
        if ($inString && $c === $strChar && $rlline[$i-1] !== '\\') {
            $inString = false; $i++; continue;
        }
        if ($inString) { $i++; continue; }
        if ($c === '{') {
            $depth++;
            $prevLine = trim($phpLines[$rli-1] ?? '');
            if (preg_match('/\bfunction\s+/i', $rltrimmed) ||
                preg_match('/\bfunction\s+/i', $prevLine))
                $funcDepths[$depth] = true;
        } elseif ($c === '}') {
            unset($funcDepths[$depth]);
            $depth = max(0, $depth-1);
        }
        $i++;
    }
    // depth=0 + no open function = global scope
    if ($depth === 0 && empty($funcDepths) && $rli > 2) {
        if (preg_match('/^\s*return\b/i', $rltrimmed))
            $issues[] = ['type'=>'warning', 'line'=>$rli+1,
                'msg'=>'return outside any function — misplaced code',
                'source'=>'PHP Structure'];
    }
}
Linter112 PHP patterns
Zero deps1 file only
107 LanguagesCodeMirror 5
PHP File Managerv1.0.0
CodeMirror 5Full IDE
107
107 LanguagesSyntaksfremhaevning
PHP & CSS & JSLinter · 112 patterns
ZIP BrowserDrag & Drop
IP BanBrute-force Skjold
ENRODK
EN / RO / DK UIZero Reload
Full-stack PHP & JSFull-Stack
CK3 WorkshopSteam Mods
Classical GuitarFingerstyle
Ancient CoinsMedieval Numismatics
1
Single PHP FileNul Afhaengigheder
Side-om-side Diff.bak backup
Mobile · DrawerHaptics
VamdrupDenmark · EU
PHP File Managerv1.0.0
CodeMirror 5Full IDE
107
107 LanguagesSyntax highlight
PHP & CSS & JSLinter · 112 patterns
ZIP BrowserDrag & Drop
IP BanBrute-force Shield
ENRODK
EN / RO / DK UIZero Reload
CodeIgniter 4Full-Stack
CK3 WorkshopSteam Mods
Classical GuitarFingerstyle
Ancient CoinsMedieval Numismatics
1
Single PHP FileNul Afhaengigheder
Side-om-side Diff.bak backup
Mobile · DrawerHaptics
VamdrupDenmark · EU
Softwareprodukter

PraecisionsvaerktoejerPraecise vaerktoejer
Hele din server, administreret.

Ikke et dashboard. Ikke en framework-wrapper. En rigtig kodeeditor, ZIP-browser, linter og diff-vaerktoj — komprimeret i en enkelt PHP-fil du placer overalt og den virker. Med det samme.

Tilgaengelig Nu Enkelt Fil PHP 7.0 → 8.4
PHP File Manager
by Tyrus Angel  ·  v1.0.0

Ikke et dashboard. Ikke en framework-wrapper. En rigtig kodeeditor, ZIP-browser, linter og diff-vaerktoj — komprimeret i en enkelt PHP-fil du placer overalt og den virker. Med det samme.

“At administrere serverfiler boer ikke kraeve SSH-adgang, en VPS eller tre separate vaerktoejer. Det boer kraeve praecis en fil — og tredive sekunder.”

  • CodeMirror 5 kodeeditor — Dracula-tema — 107 syntaks-tilstande (syntaksfremhævning) + autofuldførelse
  • 112 PHP-moenstre, CSS-egenskabsvalidator, JS-parentestjek — med inline-markering
  • Visuelt diff mod .bak — backup oprettes automatisk ved hvert enkelt gem.
  • ZIP-browser med udvidbart tree, cascading-udvalgelse, drag & drop-udtrae til enhver mappe.
  • Brute-force IP-blokering — animeret horror canvas vist til blokerede besoegere.
  • Fuld EN / RO / DK UI — 240+ oversaettelsenogler, animeret pill-skifte, nul sideindlaesning
  • Side-om-side sammenligning — Multi-omdoebning med live forhands­visning — Indholdssogning i filer.
  • Udtraekkelig skuffe, lang-tryk kontekstmenu, haptisk feedback pa mobil
// Hvad er indeni
🔬
Kode-linter
112 PHP-moenstre, CSS-egenskabsvalidator, JS-parentestjek — med inline-markering
📦
ZIP-browser
Udvidbart tree, cascading afkrydsningsfelt-udvalgelse, drag & drop-udtrae til enhver mappe.
Sammenlign & Diff
Side-by-side filsammenligning + .bak visuelt diff med et-klik gendannelse
🔒
Login & Sikkerhed
Bcrypt-godkendelse, brute-force IP-blokering, 30-min sessiontimeout, fuld aktivitetslog
📱
Mobil
Udtraekkelig skuffe, lang-tryk kontekstmenu, haptisk feedback pa mobil
🌐
Flersproget
Fuld EN / RO / DK UI — 240+ oversaettelsenogler, animeret pill-skifte, nul sideindlaesning
Multi-omdoebning
Batchomdoebning med praefiks, suffiks, find/erstat — live forhands­visning per fil
🔍
Filsoegning
Tekstsoegning inde i filer, grupperet pr. fil — klik for at hoppe til den praecise linje
PHP 7.0+CodeMirror 5 Vanilla JSZero deps1 file BcryptZipArchiveDiff
// Vaelg din licens — engangsbetalning, din for evigt
Personlig
Et websted du ejer
19engangs
  • 1 personligt websted
  • Alle funktioner inkluderet
  • Livstidsadgang
  • Gratis fremtidige opdateringer
POPULAER
Udvikler
Ubegransede personlige projekter
49engangs
  • Ubegransede egne websteder
  • Alle funktioner inkluderet
  • Livstidsadgang
  • Gratis fremtidige opdateringer
Bureau
Kundewebsteder inkluderet
99engangs
  • Ubegranset + kundewebsteder
  • Alle funktioner inkluderet
  • Livstidsadgang
  • Gratis fremtidige opdateringer
I smedjen
Flere vaerktoejer.
Samme filosofi.
Sikkerhedsscanner Cache Manager Task Scheduler Perf Monitor
security.php 1 file cache.php 1 file scheduler.php 1 file monitor.php 1 file
Sådan bygger jeg

Jeg bygger det du har brug for.
Fra bunden. Ingen genveje.

En full-stack udvikler der rent faktisk bygger. Ingen bureauer, ingen mellemmaend, ingen skabeloniserede resultater. Hvis du kan beskrive det praecist, kan jeg bygge det — eller jeg er aerlig hvis jeg ikke kan.

01 — Foundation
Fuldstaendig selvlaert.
Startende fra nul.

Over et artis bygning — fuldstaendig selvlaert, startende fra nul, aldrig brugt en genvej jeg ikke forstod foerst. Fra enkle landingssider til fulde e-handelssystemer i CodeIgniter 4, hvert projekt far samme niveau af omhu.

10+ ar · selvlaert
02 — Craft
Jeg forstar hvorfor ting bryder sammen.

Jeg har genopbygget temaer sa fuldstaendigt de ikke laenger ligner originalen. Jeg har debugget kodebaser andre gav op pa. Jeg forstar ting bryder — og jeg bygger sa de ikke bryder igen.

genopbygget · debugget · haerdet
03 — Direct
Ikke et bureau.
Personen der skriver koden.

Du ansaetter ikke et bureau. Du taler direkte med personen der skriver koden. Det aendrer kvaliteten af samtalen og outputtet.

direkte · ingen mellemmaend
01 /
<html> <head> <body> <div> ... </html> LIVE
Softwaretjeneste
Skraeddersyede
Hjemmesider

Bygget fra bunden eller oven pa din stack. Ren kode, ingen sidebyggere, ingen WordPress-afhaengighed. Praecis som du beskrev det.

HTML/CSS PHP CI4 MySQL
02 /
NULL 500 ERROR FANGET fix → 200 OK ✓ 🔒
Softwaretjeneste
Hjemmeside Reparation & Redning

Defekte layouts, stille PHP-fejl, langsom indlaesning, foraedet kode, sikkerhedshuller —Jeg finder rodarsagen og genopbygger det permanent rettet.

Fejlretning Optimering Sikring
03 /
FØR oldsite.com MIN HJEMMESIDE Klik Her © 2009 All rights reserved EFTER tyrus.dk TYRUS KOM I GANG © 2026 TYRUS · VAMDRUP
Softwaretjeneste
Tema
Forvandling

Fuldstaendig redesign af ethvert eksisterende tema. Jeg har gjort det nok gange til at intet af originalen normalt overlever. Det er meningen.

CSS JS PHP hooks
04 /
MySQL CI4 API HTML/JS DEPLOY // layers Database · MySQL Backend · CI4 REST Frontend · HTML/JS // hvad medfølger E-handelsplatform Bookingsystem Interne vaerktoejer / CMS Brugerdefineret REST API
Softwaretjeneste
Full-Stack
Projekt

En komplet applikation fra databasearkitektur til den sidste pixel. E-handel, booking, interne vaerktoejer, brugerdefineret CMS — alt der kan beskrives praecist kan bygges praecist.

CI4 MySQL REST API JS Responsive
$ tyrus --process

Fire trin. Ingen undtagelser. Hvert projekt, hver gang.

01
Forsta
tyrus understand --client new
02
Arkitekt
tyrus architect --no-shortcuts
03
Byg
tyrus build --mode deliberate
04
Lever
tyrus ship --honest
TRIN 01 / 04 — FORSTA
tyrus.dk

Nogle vaerktoejer installeres. Andre placer man blot — og de virker. Det er den eneste standard jeg bygger efter.

A. Angel Țîru  ·  Founder, Tyrus  ·  Vamdrup, Denmark
Artisanen

Artisanen.
Ti ar inde. Bygger stadig.

Jeg hedder A. Angel Țîru, ingen kurser, ingen mentorer, under konstant okonomisk pres. Det jeg ved blev bygget fra intet, testet i produktion og forfinet af fiasko.

Navnet Tyrus kommer fra min familie. Den antikke by Tyrus Tyrus var motoren i Middelhavets handel — bygget pa praecisionshaandvaerk og fortjent tillid. Det er den standard jeg arbejder efter, ikke den jeg paastaar.

I oktober 2025 flyttede jeg til Vamdrup, Danmark med min kone Claudia og vores doetre Julie og Jessica. I februar 2026 grundlagde jeg officielt Tyrus. Bygger under virkelig pres. Stopper ikke.

I don't build fast. I build korrekt — og de to ting er sjaeldent det samme.

Flersproget
En fil. Upload den. Abn den. Den virker. Kompleksiteten er indeni — oplevelsen er umiddelbar.
🔬
Kode-linter
112 PHP-skrivefejlsmoenstre. Cascading ZIP-udvalgelseslogik. Levenshtein-baserede CSS-forslag. Intet her er approksimativt.
🏛
Direkte kontakt. Ingen biletkoer, ingen bureauer, ingen bots. Du ved praecis hvem der byggede det og hvorfor hver beslutning blev truffet.
>Direkte kontakt. Ingen biletkoer, ingen bureauer, ingen bots. Du ved praecis hvem der byggede det og hvorfor hver beslutning blev truffet.
🌍
Momskompatibel fakturering. Transparent, engangs prissaetning. Ingen abonnementer, nogensinde. Jeg arbejder under dansk og EU-lovgivning.
Momskompatibel fakturering. Transparent, engangs prissaetning. Ingen abonnementer, nogensinde. Jeg arbejder under dansk og EU-lovgivning.
Ud over Koden

Ikke kun en udvikler.
En bygger af ting.

Obsessionen der former koden strækker sig til alt andet. Den samme taalmodighed der lader mig laese 8000 linjer PHP er den samme taalmodighed der lader mig identificere en romersk moent fra det 2. aarhundrede pa dens patina.

⚔️
Crusader Kings III Mods
Udgivet pa Steam Workshop med tusindvis af aktive abonnenter.

Spilmodifikationer til Crusader Kings III — komplekse begivenhedskaeder, nye mekanikker, rebalancerede systemer. Samme logiske praecision som kode, anvendt pa middelaldersimulering.

Se pa Steam Workshop ↗
🎸
Klassisk Guitar
Fingerstyle · Selvbearbejdet · Siden 13 ars alderen

Guitar siden 13. Efter en lang pause fangede fingerstyle pa klassisk guitar mig helt — arrangerer nu stykker der aldrig er blevet transkriberet til sologuitar. Den samme staedfasthed. Laere ting ingen andre gad skrive ned.

YouTube-kanal ↗
🪙
Numismatik
Antikke & Middelalder · Siden 23 ars alderen

Identificering, fotografering og dokumentation af antikke moentstykker, middelalderlige genstande, sedler og faleristics siden 23 ars alderen. Hvert stykke far fuld detalje uanset vaerdi — fordi historien betyder mere end prisen.

Besog cjagora.ro ↗
Vejen

Ingen grad. Ingen mentor. Intet sikkerhedsnet. Bare en bane der fortsatte — for at stoppe var aldrig faktisk en mulighed.
Hvert skridt talte.

Ingen grad. Ingen mentor. Intet sikkerhedsnet. Bare en bane der fortsatte — for at stoppe var aldrig faktisk en mulighed.

Om at vaere artizan
“Jeg har aldrig haft luksusen af halvmaengder. Nar du bygger alt selv, bygger du det enten rigtigt — eller du bygger det om.”
Om vaerktoejer
“Det bedste vaerktoj er det der forsvinder. Du stopper med at taenke pa det — og bruger det bare.”
Om detaljer
“Nogle mennesker er generet af besaettelse med detaljer. Jeg anser det for at vaere deres problem, ikke mit.”
Om familie
“Alt hvad jeg bygger er for Claudia, Julie og Jessica. Det er ikke et slogan. Det er den eneste grund til at alt dette betyder noget.”
Alder 10 – 11
Handel foer skolen laerte det
Hjalp foraeldre med at saelge diverse ting — brugte toj, hjemmelavede genstande, cd'er og alt muligt andet. Arbejde var aldrig valgfrit — det var simpelthen saadan tingene var. Den virkelighed formede alt der fulgte. At fa en brugt Pentium II af mine foraeldre var gnisten.
Alder 13
Foerste guitar. Foerste kode. Samme ar.
En billig, unavngivet guitar antaendte noget der aldrig stoppede. Nysgerrighed for IT startede samme ar. To besaettelser fodt af den samme urolige nysgerrighed.
Alder 22
Forste site — fra bunden, ikke fra en skabelon
Forste forsoeg pa et site — fra bunden, ikke fra en skabelon. Ingen WordPress. Ingen genveje. Fra det tidspunkt var jeg fast besluttet pa at vaere fuldstaendig uafhaengig — ingen afhaengighed af noget CMS. De kampe der fulgte var det vaerd. Eget CMS, egen kontrol, egen logik. Det har aldrig aendret sig pa noget projekt siden.
Alder 23
Numismatik som haandvaerk, ikke blot en hobby
En dyb passion for historie siden barndommen — sa jeg solgte ikke bare, jeg samlede, studerede, fotograferede hvert detalje. Komplet dokumentation pa hvert stykke — uanset om det solgte for 3 eller 300 €. Historien betod altid noget. At bygge et site omkring denne passion kom naturligt — de to verdener var altid flettet sammen.
Okt 2025
Danmark. Nyt kapitel.
Flyttede til Vamdrup, Danmark med Claudia, Julie og Jessica. Vi investerede alt i dette flyt — definerende, bevidst, laenge overvejet. Rumaenien foltes aldrig som hjem. Dette var det skridt vi havde taenkt pa i mange ar. Nyt land, ny begyndelse. Under reelt okonomisk pres — bygger alligevel, fordi det er den eneste modus jeg har.
Feb 2026
Tyrus — officielt grundlagt.
Registrerede virksomheden. Tyrus er nu virkeligt — ikke bare et navn pa en fil. Det brand jeg har bygget mod i ar, nu med et fundament under det.
Lad Os Arbejde Sammen
Et produkt. En hjemmeside.
Eller noget helt nyt.

Licenser PHP File Manager, bestil en skraeddersyet hjemmeside eller bring mig et problem vaerd at loese. Du taler direkte med mig — ikke en supportkoe, ikke en kontoadministrator. En rigtig samtale.

Se Software →
Svar inden 24t  ·  Ingen forpligtelse  ·  Vamdrup, Danmark  ·  EU