Petabit je responzivna i višejezična ASP.NET Core MVC aplikacija za tehnološki sadržaj i praćenje Međunarodne svemirske postaje. Projekt kombinira Razor poglede, lokalizaciju, animirani ISS prikaz, vanjski API te automatiziran i nadziran produkcijski deployment.
- hrvatsko, englesko i njemačko sučelje; zadani jezik je engleski
- dark/light tema sa spremanjem korisničkog odabira
- ISS tracker s trenutačnom lokacijom i brzinom postaje
- animirani hologramski prikaz Zemlje, orbite i položaja ISS-a
- LED matrični prikaz lokacije, brzine, posade i spojenih letjelica
- minimalni ISS prikaz kao odvojeno, lagano sučelje nad istim API endpointom
- kurirani podaci o posadi i letjelicama s poveznicom na NASA-u
- responzivan navbar i prikaz prilagođen mobilnim uređajima
- stranice za knjige, aplikacije, blockchain i privatnost
- Google Analytics koji se učitava tek nakon korisničke privole
- Preglednik poziva serverski endpoint
/Home/Data. - ASP.NET Core koristi imenovani
HttpClientza dohvat podataka s vanjskog ISS API-ja. - Resilience pipeline primjenjuje timeout, retry i circuit breaker.
- Uspješan odgovor sprema se u output cache na 10 sekundi.
- Klijent sigurno prikazuje lokaciju, brzinu, posadu i spojene letjelice.
Izvori podataka:
- Where the ISS at? API — trenutačna lokacija i brzina ISS-a
- NASA — referentni podaci o postaji, posadi i letjelicama
- HTTPS redirekcija i jednogodišnji HSTS u produkciji
- Content Security Policy s jednokratnim nonceom za inline skripte i stilove
- sigurnosna zaglavlja
X-Content-Type-Options,X-Frame-Options,Referrer-PolicyiPermissions-Policy - antiforgery validacija za POST zahtjeve
- rate limiting ISS endpointa na 10 zahtjeva u minuti po IP adresi klijenta
- sigurno DOM renderiranje API podataka bez umetanja preko
innerHTML - culture cookie s atributima
HttpOnly,SecureiSameSite=Lax - analitika tek nakon izričite korisničke privole
- Docker runtime pod neprivilegiranim korisnikom
- NuGet audit za poznate ranjivosti i CodeQL analiza C# koda
- Dependabot nadogradnje; automatski merge ograničen je na patch verzije koje prođu sve obvezne provjere
- timeout, retry i circuit breaker za vanjski ISS servis
/health/liveprovjera procesa i/health/readyprovjera dostupnosti ISS servisa- post-deployment smoke test nakon svakog pusha u
master - Better Stack provjera produkcijskih liveness, readiness i ISS API endpointova svake 3 minute
- tjedna provjera starosti kuriranih podataka o ISS posadi i letjelicama
- smoke test početne stranice, readiness endpointa i ISS trackera
- strukturirani JSON logovi u produkciji
- validirani
X-Correlation-IDza povezivanje korisničkog zahtjeva s Railway logovima - sigurna produkcijska error stranica bez izlaganja detalja iznimke
GitHub Actions na svakom pull requestu i pushu u master izvršava:
- restore NuGet paketa
- Release build
- integracijske testove
- Docker build
- NuGet security audit
- CodeQL analizu
Grana master zaštićena je pull request pravilima i zahtijeva prolazak sljedećih provjera:
Restore, build and testBuild Docker imageAudit NuGet dependenciesAnalyze C# with CodeQL
Nakon mergea Railway automatski deploya novu verziju, a produkcijski smoke test potvrđuje dostupnost aplikacije.
Projekt sadrži integracijske testove za:
- live i ready health endpoint
- početnu stranicu i sigurnosna zaglavlja
- minimalni ISS tracker
- uspješan odgovor ISS API-ja
- privremenu nedostupnost vanjskog ISS servisa
- correlation ID u produkcijskom odgovoru
Lokalna provjera cijelog rješenja:
dotnet restore Petabit.sln --configfile NuGet.Config
dotnet build Petabit.sln --configuration Release --no-restore -p:UseAppHost=false
dotnet test Petabit.sln --configuration Release --no-build- .NET 10 i ASP.NET Core MVC
- C# i Razor Views
- JavaScript, Canvas API i Fetch API
- HTML5, CSS3 i Bootstrap 5
.resxlokalizacija- ASP.NET Core Output Caching i Rate Limiting
Microsoft.Extensions.Http.Resilience- xUnit integracijski testovi
- Docker, GitHub Actions i Railway
- .NET 10 SDK
- Visual Studio, Visual Studio Code ili drugi editor po izboru
git clone https://github.com/ChevCellios/Petabit.git
cd Petabit
dotnet restore Petabit.sln --configfile NuGet.Config
dotnet run --project Petabit/Petabit.csprojAplikacija koristi URL prikazan u terminalu ili postavljen u Petabit/Properties/launchSettings.json.
docker build --tag petabit --file Petabit/Dockerfile .
docker run --rm --publish 3000:3000 petabitLokalni Docker image koristi port 3000 kada varijabla PORT nije postavljena. Aplikacija je tada dostupna na http://localhost:3000.
Railway automatski postavlja varijablu PORT; produkcijski servis trenutačno koristi target port 8080.
Railway deployment automatski se prepoznaje preko sistemske varijable RAILWAY_ENVIRONMENT_ID i
sigurno obrađuje točno jedan ingress proxy hop, pa proxy IP ne treba unositi ručno. Na drugim hosting
platformama pojedinačne pouzdane adrese postavljaju se varijablama poput
ForwardedHeaders__KnownProxies__0, a CIDR mreže varijablama poput
ForwardedHeaders__KnownNetworks__0. Neusklađena forwarded zaglavlja se odbacuju.
PetabitNabrijavanje/
├── .github/
│ ├── dependabot.yml
│ └── workflows/
│ ├── ci.yml
│ ├── dependabot-automerge.yml
│ ├── security.yml
│ └── uptime.yml
├── Petabit.Tests/
│ └── ApplicationTests.cs
├── Petabit/
│ ├── Controllers/
│ ├── Models/
│ ├── Resources/
│ ├── Views/
│ ├── wwwroot/
│ ├── Dockerfile
│ ├── Program.cs
│ └── RequestObservabilityMiddleware.cs
├── NuGet.Config
├── Petabit.sln
└── README.md
Trenutačna funkcionalnost smatra se stabilnom. Buduća poboljšanja mogu se razvijati odvojeno, bez promjene postojećeg ponašanja:
- automatizirani browser/E2E testovi za navigaciju, temu, jezik i ISS interakcije
- detaljan accessibility pregled tipkovnice, kontrasta i screen reader oznaka
- dodatni testovi za rate limiting, timeout i circuit breaker scenarije
- vanjski alerting za produkcijske iznimke
- izvještaj o pokrivenosti testovima i periodično mjerenje performansi
Prijave grešaka i obrazloženi prijedlozi dobrodošli su kroz GitHub Issues. Prije prvog doprinosa pročitaj vodič za doprinos projektu.
Moguće ranjivosti nemoj objavljivati kroz javni Issue. Prijavi ih privatno prema sigurnosnoj politici projekta.
Projekt je objavljen pod MIT licencom. Dopušteni su korištenje, izmjene i distribucija uz zadržavanje obavijesti o autorskim pravima i tekstu licence.
- GitHub: ChevCellios
- Pitanja i prijedlozi: GitHub Issues

