diff --git a/README.md b/README.md index 633ad9a..8841578 100644 --- a/README.md +++ b/README.md @@ -1,91 +1,47 @@ -# Full-Stack Learning Project +# ETF Oglasi -This repository is a full-stack learning project focused on building and understanding modern application development practices end-to-end. +ETF Oglasi logo -It demonstrates how to design, build, and deploy a real-world application using a backend API, mobile frontend, database integration, and CI/CD workflows. +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 -- RESTful API architecture -- PostgreSQL database +- **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 -### Frontend -- React Native (Expo) +## Project Structure -### DevOps / Tooling -- Docker -- CI/CD pipelines (Gitea Actions or similar) -- Git version control +- `backend/` — Spring Boot REST API and the scraper +- `frontend/` — Expo mobile app ---- +## Backend -## Purpose +```bash +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 +``` -The goal of this project is to gain hands-on experience with: +Run tests: `./gradlew test` -- Full-stack application architecture -- Backend API development with Spring Boot -- Mobile development with React Native -- Database design and integration -- Authentication and security concepts -- Containerization with Docker -- Continuous Integration / Continuous Deployment (CI/CD) +## Frontend ---- - -## Deployment - -The application is deployed on a self-hosted home server for development and testing purposes. - ---- - -## How to Run (Backend) - -To be added. - -Planned steps: -- Install Java and Gradle -- Configure PostgreSQL database -- Set environment variables -- Run Spring Boot application -- Expose API on localhost or network -- I usually run eveything with traefik but i dont know should i include that here??? - ---- - -## How to Run (Frontend) - -To be added... - - ---- - - -## CI/CD - -To be added. - -Planned steps: -- Configure Gitea Actions / CI pipeline -- Build backend and frontend automatically -- Deploy to home server -- Automate testing and builds - ---- +```bash +cd frontend +npm install +# set EXPO_PUBLIC_API_URL in .env to the backend base URL +npm start +``` ## Status -This project is currently under semi-active development as a learning and experimentation environment. - ---- - -## Notes - -This project is just me messing around with stuff while making an app i will use and perhaps others will find it useful - - -need to made .creds .env and init directory with subjects.txt +Semi-actively developed as a learning project. It is an app I actually use, and +maybe others will find it useful too. diff --git a/frontend/app.json b/frontend/app.json index 561014a..82d13a0 100644 --- a/frontend/app.json +++ b/frontend/app.json @@ -14,7 +14,7 @@ "android": { "googleServicesFile": "./google-services.json", "adaptiveIcon": { - "backgroundColor": "#E6F4FE", + "backgroundColor": "#1C1918", "foregroundImage": "./assets/images/android-icon-foreground.png", "backgroundImage": "./assets/images/android-icon-background.png", "monochromeImage": "./assets/images/android-icon-monochrome.png" diff --git a/frontend/assets/images/android-icon-background.png b/frontend/assets/images/android-icon-background.png index 5ffefc5..ebf4f76 100644 Binary files a/frontend/assets/images/android-icon-background.png and b/frontend/assets/images/android-icon-background.png differ diff --git a/frontend/assets/images/android-icon-foreground.png b/frontend/assets/images/android-icon-foreground.png index 3a9e501..e68b6c4 100644 Binary files a/frontend/assets/images/android-icon-foreground.png and b/frontend/assets/images/android-icon-foreground.png differ diff --git a/frontend/assets/images/android-icon-monochrome.png b/frontend/assets/images/android-icon-monochrome.png index 77484eb..a338f38 100644 Binary files a/frontend/assets/images/android-icon-monochrome.png and b/frontend/assets/images/android-icon-monochrome.png differ diff --git a/frontend/assets/images/favicon.png b/frontend/assets/images/favicon.png index 408bd74..7208ce8 100644 Binary files a/frontend/assets/images/favicon.png and b/frontend/assets/images/favicon.png differ diff --git a/frontend/assets/images/icon.png b/frontend/assets/images/icon.png index 7165a53..746b22b 100644 Binary files a/frontend/assets/images/icon.png and b/frontend/assets/images/icon.png differ diff --git a/logo.png b/logo.png new file mode 100644 index 0000000..9555b3d Binary files /dev/null and b/logo.png differ