✦ Præferencer gemt
TYRUS
angel@tyrus : ~$ _
// softwarebygger  ·  webhåndværker  ·  digital arkitekt

PræcisionsværktøjerPræcise værktøjer til dem der bygger nettet.

Digital Håndværk
tyrus.dk

Freelance webudvikler & softwarebygger — A. Angel Țîru. Skræddersyede hjemmesider, fejlretning, audits. Ingen WordPress. Ingen skabeloner. Tilgængelig til projekter. Enkeltfilsværktøjer uden installation via package manager eller tredjeparts-CDN under drift, plus skræddersyede hjemmesider bygget til at holde. Selvlært. Obsessiv. Vamdrup, Danmark.

Softwareprodukter
Full-Stack Udvikler
CI4 & PHP
Spilmodder
Numismatiker
0+ År Dev
Erfaring
Selvlært siden 2014
Full-stack PHP & JS
Full-stack PHP & JS
0 Afhængigheder
Nul oppustethed
Ingen composer
Ingen npm
Ingen database
{ }
0+ Editor-modes
CodeMirror 5
PHP, JS, CSS, SQL
Python, Lua, YAML
203 filnavn/indhold-mappinger
📄
0 Fil. Fuld IDE.
PHP File Manager
1.15 MB · Enkelt Fil
CodeMirror 5 IDE
Upload & kør med det samme
Serverfiler
📁..
📁application
📁assets
📁uploads
📁writable
📄.env0.3kB
📄.htaccess0.4kB
app.js12.1kB
📦backup.zip38.2kB
🌐index.php75.0kB
🌐manager.php1.15 MB
🎨style.css18.3kB
zip-browser.js9.7kB
↑ upload fil (eller træk & slip)
tyrus.dk  /  PHP File Manager v1.0.4
🌐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'];
    }
}
Linter118 PHP-typotjek
Single fileIntet tredjeparts-CDN under drift
203 verificerede mappingerCodeMirror 5
PHP File Managerv1.0.4
CodeMirror 5Full IDE
203
203 verificerede mappingerSyntaksfremhævning
PHP & CSS & JS118 PHP-typotjek
ZIP BrowserDrag & Drop
IP BanBrute-force-lås
ENRODK
EN / RO / DK UIZero Reload
Full-stack PHP & JSFull-Stack
CK3 WorkshopSteam Mods
Classical GuitarFingerstyle
Ancient CoinsMedieval Numismatics
1
Single PHP FileIngen pakkeinstallation
Side-om-side Diff.bak backup
Mobile · DrawerHaptics
VamdrupDenmark · EU
PHP File Managerv1.0.4
CodeMirror 5Full IDE
203
203 verificerede mappingerSyntaksfremhævning
PHP & CSS & JS118 PHP-typotjek
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 FileIngen pakkeinstallation
Side-om-side Diff.bak backup
Mobile · DrawerHaptics
VamdrupDenmark · EU
Softwareprodukter

PræcisionsværktøjerPræcise værktøjer
Hele din server, administreret.

Ikke et dashboard. Ikke en framework-wrapper. En rigtig kodeeditor, ZIP-browser, linter og diff-værktøj; samlet i én PHP-fil, som du kan placere hvor som helst og køre med det samme.

Tilgængelig nu Enkelt Fil PHP 8.0+
PHP File Manager
by Tyrus Angel  ·  v1.0.4

Ikke et dashboard. Ikke en framework-wrapper. En rigtig kodeeditor, ZIP-browser, linter og diff-værktøj; samlet i én PHP-fil, som du kan placere hvor som helst og køre med det samme.

“At administrere serverfiler bør ikke kræve SSH-adgang, en VPS eller tre separate værktøjer. Det bør kræve præcis en fil; og tredive sekunder.”

  • CodeMirror 5-editor med Dracula-tema, autofuldførelse og 203 verificerede mappinger fra filnavn til syntakstilstand
  • 118 kontroller for fejlskrevne PHP-funktionsnavne, CSS-egenskabsvalidering og JS-parentestjek med inline-markeringer
  • Visuelt diff mod .bak — den forrige version sikkerhedskopieres automat ved hver gemning til den valgte backupplacering.
  • ZIP-browser med udvidbar trævisning, kaskadevalg og træk-og-slip-udpakning til enhver mappe.
  • Gentagne mislykkede loginforsøg udløser en 15 minutters midlertidig IP-lås med en særskilt skærm for blokeret adgang.
  • Komplet EN / RO / DK-grænseflade; 416 UI-nøgler på hvert sprog, animeret skifter og sprogskift uden genindlæsning
  • Side-om-side sammenligning — Multi-omdøbning med live forhånds­visning — Indholdssøgning i filer.
  • Udtrækkelig skuffe, lang-tryk kontekstmenu, haptisk feedback på mobil
// Hvad er indeni
🔬
Kode-linter
118 kontroller for fejlskrevne PHP-funktionsnavne, CSS-egenskabsvalidering og JS-parentestjek med inline-markeringer
📦
ZIP-browser
Udvidbar trævisning, kaskadevalg med afkrydsningsfelter og træk-og-slip-udpakning til enhver mappe.
Sammenlign & Diff
Side-by-side filsammenligning + .bak visuelt diff med et-klik gendannelse
🔒
Login & Sikkerhed
Bcrypt-godkendelse, 15 minutters midlertidig IP-lås efter gentagne fejl, 30 minutters sessionstimeout og aktivitetslog
📱
Mobil
Udtrækkelig skuffe, lang-tryk kontekstmenu, haptisk feedback på mobil
🌐
Flersproget
Komplet EN / RO / DK-grænseflade; 416 UI-nøgler på hvert sprog, animeret skifter og sprogskift uden genindlæsning
Multi-omdøbning
Batchomdøbning med præfiks, suffiks og find/erstat; live forhånds­visning for hver fil
🔍
Filsøgning
Tekstsøgning inde i filer, grupperet pr. fil; klik for at hoppe til den præcise linje
PHP 8.0+CodeMirror 5 Vanilla JSNo Composer/npmIntet tredjeparts-CDN under drift1 file BcryptZipArchiveDiff
I smedjen
Flere værktøjer.
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 bygges projekter

Bygget omkring projektets behov.
Fra bunden. Ingen genveje.

Uafhængig full-stack-udvikling uden bureauled, mellemled eller skabelonbaserede løsninger. En præcis opgavebeskrivelse får et præcist teknisk svar, også når et krav ikke er realistisk.

01 — Foundation
Fuldstændig selvlært.
Startende fra nul.

Mere end et årtis praktisk udvikling — fuldstændig selvlært og startet fra nul, med hver genvej forstået, før den bruges. Fra enkle landingssider til komplette e-handelssystemer i CodeIgniter 4 får hvert projekt samme omhu.

10+ år · selvlært
02 — Craft
Rodårsager, ikke kun symptomer.

Temaer kan genopbygges så grundigt, at originalen ikke længere kan genkendes, og forladte kodebaser kan fejlsøges helt ned til rodårsagen. Fokus er på, hvorfor et system fejler, og på at genopbygge det, så den samme fejl ikke vender tilbage.

genopbygget · debugget · hærdet
03 — Direct
Ikke et bureau.
Personen der skriver koden.

Du ansætter ikke et bureau. Du taler direkte med personen der skriver koden. Det ændrer kvaliteten af samtalen og outputtet.

direkte · ingen mellemmænd
01 /
<html> <head> <body> <div> ... </html> LIVE
Softwaretjeneste
Skræddersyede
Hjemmesider

Bygget fra bunden eller oven på din stack. Ren kode, ingen page builders og ingen WordPress-afhængighed. Præcis 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 indlæsning, forældet kode, sikkerhedshuller —Rodårsagen identificeres og genopbygges derefter med en holdbar løsning.

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

Fuldstændig redesign af ethvert eksisterende tema. Forvandlingen kan gå så langt, at næsten intet af originalen er tilbage. Det er netop formålet.

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 værktøjer / CMS Brugerdefineret REST API
Softwaretjeneste
Full-Stack
Projekt

En komplet applikation fra databasearkitektur til den sidste pixel. E-handel, booking, interne værktøjer, brugerdefineret CMS — alt der kan beskrives præcist kan bygges præcist.

CI4 MySQL REST API JS Responsive
$ tyrus --process

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

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

Nogle værktøjer 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 år inde. Bygger stadig.

Jeg hedder A. Angel Țîru, ingen kurser, ingen mentorer, under konstant økonomisk 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 på præcisionshåndværk og fortjent tillid. Det er den standard jeg arbejder efter, ikke den jeg påstår.

I oktober 2025 flyttede jeg til Vamdrup, Danmark med min kone Claudia og vores døtre Julie og Jessica. I februar 2026 grundlagde jeg officielt Tyrus. Jeg bygger under reelt pres. Jeg stopper ikke.

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

Flersproget
Én fil. Upload den. Åbn den. Den virker. Kompleksiteten er indeni — oplevelsen er umiddelbar.
🔬
Kode-linter
118 kontroller for fejlskrevne PHP-funktionsnavne. Kaskadevalg i ZIP. Levenshtein-baserede CSS-forslag. Hvert offentliggjort tal svarer til testet funktionalitet.
🏛
Direkte kontakt. Ingen billetkøer, ingen bureauer, ingen bots. Du ved præcis, hvem der byggede det, og hvorfor hver beslutning blev truffet.
Direkte kontakt. Ingen billetkøer, ingen bureauer, ingen bots. Du ved præcis, hvem der byggede det, og hvorfor hver beslutning blev truffet.
🌍
Momskompatibel fakturering. Transparent engangsprissætning. Ingen abonnementer, nogensinde. Jeg arbejder under dansk og EU-lovgivning.
Momskompatibel fakturering. Transparent engangsprissætning. 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 tålmodighed der lader mig læse 8000 linjer PHP er den samme tålmodighed der lader mig identificere en romersk mønt fra det 2. århundrede på dens patina.

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

Spilmodifikationer til Crusader Kings III — komplekse begivenhedskæder, nye mekanikker, rebalancerede systemer. Samme logiske præcision som kode, anvendt på middelaldersimulering.

Se på Steam Workshop ↗
🎸
Klassisk Guitar
Fingerstyle · Egne arrangementer · Siden 13-årsalderen

Guitar siden 13. Efter en lang pause fangede fingerstyle på klassisk guitar mig helt — arrangerer nu stykker der aldrig er blevet transkriberet til sologuitar. Den samme stædighed. Lære ting ingen andre gad skrive ned.

YouTube-kanal ↗
🪙
Numismatik
Antikke & middelalderlige · Siden 23-årsalderen

Identificering, fotografering og dokumentation af antikke mønter, middelalderlige genstande, sedler og faleristik siden 23-årsalderen. Hvert stykke får fuld dokumentation uanset værdi — fordi historien betyder mere end prisen.

Besøg 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 håndværket
“Jeg har aldrig haft luksusen af halve løsninger. Når du bygger alt selv, bygger du det enten rigtigt — eller du bygger det om.”
Om værktøjer
“Det bedste værktøj er det, der forsvinder. Du stopper med at tænke på det — og bruger det bare.”
Om detaljer
“Nogle mennesker er generet af besættelse med detaljer. Jeg anser det for at være 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 før skolen lærte det
Hjalp forældre med at sælge diverse ting — brugt tøj, hjemmelavede genstande, cd'er og alt muligt andet. Arbejde var aldrig valgfrit — sådan var tingene bare. Den virkelighed formede alt, der fulgte. At få en brugt Pentium II af mine forældre var gnisten.
Alder 13
Første guitar. Første kode. Samme år.
En billig, unavngivet guitar antændte noget, der aldrig stoppede. Nysgerrigheden for IT startede samme år. To besættelser født af den samme urolige nysgerrighed.
Alder 22
Første site — fra bunden, ikke fra en skabelon
Første forsøg på et site — fra bunden, ikke fra en skabelon. Ingen WordPress. Ingen genveje. Fra det tidspunkt var jeg fast besluttet på at være fuldstændig uafhængig — ingen afhængighed af noget CMS. De kampe der fulgte var det værd. Eget CMS, egen kontrol, egen logik. Det har aldrig ændret sig på noget projekt siden.
Alder 23
Numismatik som håndværk, ikke blot en hobby
En dyb passion for historie siden barndommen — så jeg solgte ikke bare, jeg samlede, studerede, fotograferede hver detalje. Komplet dokumentation på 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 denne flytning — definerende, bevidst, længe overvejet. Rumænien føltes aldrig som hjem. Dette var det skridt vi havde tænkt på i mange år. Nyt land, ny begyndelse. Under reelt økonomisk pres — bygger alligevel, fordi det er den eneste måde, jeg fungerer på.
Feb 2026
Tyrus — officielt grundlagt.
Registrerede virksomheden. Tyrus er nu virkeligt — ikke bare et navn på en fil. Det brand jeg har bygget mod i år, nu med et fundament under det.
Projektforespørgsler
Et produkt. En hjemmeside.
Eller noget helt nyt.

Licensér PHP File Manager, bestil en skræddersyet hjemmeside, eller beskriv et problem, der er værd at løse. Kommunikationen er direkte med udvikleren — uden supportkø og uden kontoadministrator.

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