ksan 7a0bd3a8f1
CI/CD / Backend Unit Tests (push) Successful in 2m9s
CI/CD / Deploy (push) Has been skipped
CI/CD / Mobile Release (push) Has been skipped
Merge branch 'main' into dev
2026-07-30 16:34:07 +02:00
2026-06-11 13:54:10 +02:00
2026-07-30 15:12:17 +02:00
2026-07-30 15:12:17 +02:00

ETF Oglasi

ETF Oglasi logo

A hobby full-stack project I built to learn modern app development end to end.

It scrapes the announcement boards of the Faculty of Electrical Engineering, University of Banja Luka, stores the announcements in PostgreSQL, and lets students browse and subscribe to subjects from a mobile app. Subscribers get push notifications when new announcements are posted.

Tech Stack

  • Backend: Spring Boot 3.5 (Java 21), REST API, PostgreSQL
  • Frontend: React Native / Expo (Expo Router, NativeWind)
  • Notifications: Firebase Cloud Messaging
  • Tooling: Docker, Gitea Actions for CI/CD, deployed to a self-hosted home server

Project Structure

  • backend/ — Spring Boot REST API and the scraper
  • frontend/ — Expo mobile app

Backend

cd backend
cp src/main/resources/application.properties.example src/main/resources/application.properties  # fill in datasource + jwt.secret
docker compose up -d   # local Postgres
./gradlew bootRun

Run tests: ./gradlew test

Frontend

cd frontend
npm install
# set EXPO_PUBLIC_API_URL in .env to the backend base URL
npm start

Status

Semi-actively developed as a learning project. It is an app I actually use, and maybe others will find it useful too.

S
Description
No description provided
Readme 2.7 MiB
mobile-v6 Latest
2026-07-30 13:54:28 +00:00
Languages
TypeScript 51.9%
Java 43.9%
JavaScript 2.6%
PLpgSQL 1.5%