Student Name: Truong Minh Phuong
Student ID: 29697148
Module: Software Engineering (CMP9134)
A full-stack web application that allows users to search for openly licensed media (images and audio) using the Openverse API.
- Frontend: React + Vite + Nginx
- Backend: Java Spring Boot + Java 11
- Authentication: JWT-based (Spring Security)
- Deployment: Azure Container Apps
- CI/CD: GitHub Actions
- Containerisation: Docker
- Search for images/audio via Openverse API
- User registration and JWT login
- Save & retrieve recent searches (in-session)
- Responsive UI for mobile and desktop
- Containerised deployment with Docker
- Deployed frontend and backend on Azure
/femediasearch # React + Vite application
/bemediasearch # Java Spring Boot backend
git clone https://github.com/idslayer/Software-Engineering-Assessment
cd femediasearch
docker build -t openmedia-fe .
docker run -p 3000:80 openmedia-fe
Make sure to update the API base URL in your React frontend code to point to your backend, or remain to connect Azure-hosted backend.
For example, if using a variable.jsx
file:
const config = {
url: 'localhost:8080',
};
This ensures your frontend communicates correctly with the backend.
cd bemediasearch
docker -t openmedia-be .
docker run -p 8080:8080 openmedia-be
- Frontend: https://femedia.wittymushroom-335f7e4f.uksouth.azurecontainerapps.io
- Backend API: https://bemedia.wittymushroom-335f7e4f.uksouth.azurecontainerapps.io
- Backend tests:
./mvnw test
(run in bemediasearch folder) - Frontend: Manual testing via browser
- CI/CD configured using GitHub Actions
- Automatically builds & deploys Docker images to Azure Container Apps
- Secure and scalable cloud deployment
For users who prefer not to use Docker, the frontend and backend can be run directly on your local machine:
- Frontend: Node.js 18+
- Backend: Java 11, Maven (or use included
./mvnw
wrapper)
Ensure both tools are added to your system's PATH after installation for terminal access.
cd bemediasearch
./mvnw spring-boot:run
This will start the backend at: http://localhost:8080
cd femediasearch
npm install
npm run dev
This will start the frontend at: http://localhost:5173
📌 Make sure to update the frontend API base URL to match your local backend (
http://localhost:8080
) in your config file.
This project is built for educational purposes and uses open-licensed content from the Openverse API.