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
|
||||
|
||||
### 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.
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
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 |