added app icon and readme
@@ -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.
|
<img src="logo.png" alt="ETF Oglasi logo" width="150" />
|
||||||
|
|
||||||
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
|
## Tech Stack
|
||||||
|
|
||||||
### Backend
|
- **Backend:** Spring Boot 3.5 (Java 21), REST API, PostgreSQL
|
||||||
- Spring Boot
|
- **Frontend:** React Native / Expo (Expo Router, NativeWind)
|
||||||
- RESTful API architecture
|
- **Notifications:** Firebase Cloud Messaging
|
||||||
- PostgreSQL database
|
- **Tooling:** Docker, Gitea Actions for CI/CD, deployed to a self-hosted home server
|
||||||
|
|
||||||
### Frontend
|
## Project Structure
|
||||||
- React Native (Expo)
|
|
||||||
|
|
||||||
### DevOps / Tooling
|
- `backend/` — Spring Boot REST API and the scraper
|
||||||
- Docker
|
- `frontend/` — Expo mobile app
|
||||||
- CI/CD pipelines (Gitea Actions or similar)
|
|
||||||
- Git version control
|
|
||||||
|
|
||||||
---
|
## 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
|
## Frontend
|
||||||
- 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)
|
|
||||||
|
|
||||||
---
|
```bash
|
||||||
|
cd frontend
|
||||||
## Deployment
|
npm install
|
||||||
|
# set EXPO_PUBLIC_API_URL in .env to the backend base URL
|
||||||
The application is deployed on a self-hosted home server for development and testing purposes.
|
npm start
|
||||||
|
```
|
||||||
---
|
|
||||||
|
|
||||||
## 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
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Status
|
## Status
|
||||||
|
|
||||||
This project is currently under semi-active development as a learning and experimentation environment.
|
Semi-actively developed as a learning project. It is an app I actually use, and
|
||||||
|
maybe others will find it useful too.
|
||||||
---
|
|
||||||
|
|
||||||
## 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
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
"android": {
|
"android": {
|
||||||
"googleServicesFile": "./google-services.json",
|
"googleServicesFile": "./google-services.json",
|
||||||
"adaptiveIcon": {
|
"adaptiveIcon": {
|
||||||
"backgroundColor": "#E6F4FE",
|
"backgroundColor": "#1C1918",
|
||||||
"foregroundImage": "./assets/images/android-icon-foreground.png",
|
"foregroundImage": "./assets/images/android-icon-foreground.png",
|
||||||
"backgroundImage": "./assets/images/android-icon-background.png",
|
"backgroundImage": "./assets/images/android-icon-background.png",
|
||||||
"monochromeImage": "./assets/images/android-icon-monochrome.png"
|
"monochromeImage": "./assets/images/android-icon-monochrome.png"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 77 KiB After Width: | Height: | Size: 262 KiB |
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 384 KiB After Width: | Height: | Size: 916 KiB |