0% found this document useful (0 votes)
17 views4 pages

Full-Stack Web App Project Guide

The document outlines a full-stack web application project for 5th-year Software Engineering students at Woldia University, requiring the development of a RESTful API using Spring Boot and a frontend with Next.js. Key objectives include implementing RESTful services, applying JWT for security, and collaborating via GitHub. The project will be evaluated on group performance and individual contributions, with strict adherence to academic integrity and submission requirements.

Uploaded by

eliasferhan1992
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
17 views4 pages

Full-Stack Web App Project Guide

The document outlines a full-stack web application project for 5th-year Software Engineering students at Woldia University, requiring the development of a RESTful API using Spring Boot and a frontend with Next.js. Key objectives include implementing RESTful services, applying JWT for security, and collaborating via GitHub. The project will be evaluated on group performance and individual contributions, with strict adherence to academic integrity and submission requirements.

Uploaded by

eliasferhan1992
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Woldia University/Institute of Technology /Software Engineering- 5th Year --Web Service Project

2025 E.C
Student Class Project Instruction
Full-Stack Web Application Using Spring Boot REST API and [Link] UI
1. Project Overview
This project requires students to design, develop, and demonstrate a full-stack web application
consisting of:
• A RESTful API developed using Spring Boot
• A frontend user interface developed using [Link]/React
The project emphasizes REST principles, API security, database integration, frontend–backend
communication, teamwork, and version control collaboration using GitHub.
2. Project Objectives
By completing this project, students will:
• Design and implement RESTful services using Spring Boot

• Consume REST APIs from a [Link] frontend


• Apply authentication and authorization using JWT
• Work collaboratively using GitHub version control
• Demonstrate individual contribution in a group project
3. General Project Requirements
1. Backend must be implemented using Spring Boot
2. Frontend must be implemented using [Link]
3. Backend and frontend must be separate applications
4. All communication must use JSON
5. The system must support CRUD operations
6. The project should have at least 4 entities with relation
7. Proper input validation and error handling are required
8. Code must be well-structured, readable, and documented
9. The project must be developed collaboratively using GitHub
4. Backend Requirements (Spring Boot REST API)
4.1 Technology Stack (Mandatory)
 Framework: Spring Boot, Language: Java ,
 ORM: Spring Data JPA (Hibernate)
 Database: PostgreSQL
 Security: Spring Security with JWT
 API Documentation: Swagger / OpenAPI

4.2 Architecture & Structure


The Spring Boot application must follow a layered architecture:
 controller – REST endpoints
 service – business logic
 repository – database access
 entity / model – JPA entities

Page 1 of 4
Woldia University/Institute of Technology /Software Engineering- 5th Year --Web Service Project
2025 E.C
 dto – Data Transfer Objects
 exception – global exception handling
 security – authentication and authorization
4.3 REST API Functional Requirements
The API must provide:
 Create (POST)
 Read (GET – list and single resource) list should have sorting, searching, pagination
 Update (PUT or PATCH)
 Delete (DELETE)
 User Management Module (create, update, reset, delete, activate and deactivate account,
grant and revoke roles)
4.4 Validation & Error Handling
 Use Bean Validation annotations (@NotNull, @Size, etc.)
 Implement global exception handling using @ControllerAdvice
 Return meaningful HTTP status codes and structured error responses
4.5 Security & Authentication
 Implement JWT-based authentication
 Secure protected endpoints
 Hash passwords using BCrypt
 Provide public endpoints for login and registration
4.6 Database Requirements
 Use JPA entities with proper relationships
 Provide database schema or migration scripts
 Use pagination and sorting where applicable

5. Frontend Requirements ([Link] UI)


5.1 Technology Stack
 Framework: [Link]/Reactjs
 Language: JavaScript or TypeScript
 Styling: CSS / Tailwind CSS / Bootstrap
5.2 UI Functional Requirements
The frontend must:
 Authenticate users using the Spring Boot API
 Fetch and display data from REST endpoints
 Display data using tables or cards with search and sort , pagination capablity
 Provide forms for Create and Update operations
 Support Delete operations
 Handle loading states and error messages
6. API–Frontend Integration
 Use fetch() or axios for API calls
 Store and attach JWT tokens to secured requests

Page 2 of 4
Woldia University/Institute of Technology /Software Engineering- 5th Year --Web Service Project
2025 E.C
 Use environment variables for API URLs

7. GitHub Collaboration Requirements


7.1 Mandatory Version Control
 The project must be created and maintained in a GitHub/gitlab repository
 Each student must use their own GitHub account
 All development must be committed to GitHub
 Shared accounts are not allowed
7.2 Repository Structure
The repository must include:
/backend → Spring Boot project
/frontend → [Link] project
[Link] → Project documentation
7.3 Contribution Tracking
Individual involvement will be evaluated using:
 Git commit history
 Commit authorship
 Pull requests and merges
 Issue tracking (recommended)
Students with minimal or no commits will receive low or zero marks for individual
participation.
7.4 GitHub Best Practices
 Use meaningful commit messages
 Commit regularly throughout the project
 Use feature branches and pull requests where possible
8. Documentation Requirements
Each project must include:
• [Link] containing:
o Project description
o Technology stack
o Setup and run instructions
o Sample API endpoints
• Swagger/OpenAPI documentation
• Database schema or ER diagram

9. Project Evaluation & Grading


Total Marks: 20 Points
Component Weight
Project Evaluation (Group) 10 points
Individual Participation (GitHub Contribution) 10 points
Total 20 points

Page 3 of 4
Woldia University/Institute of Technology /Software Engineering- 5th Year --Web Service Project
2025 E.C

9.1 Group Project Evaluation (10 Points)


 Spring Boot REST API implementation
 [Link] UI functionality
 API–UI integration
 Security implementation
 Code quality and documentation
 System demonstration

9.2 Individual Participation (10 Points)


 Measured strictly using GitHub version control
 Quality and quantity of commits
 Consistency of contribution
 Participation in backend, frontend, or documentation
10. Academic Integrity Policy
 All work must be original
 Copying without contribution will be penalized
 Manipulating commit history is prohibited
 Violations may result in zero marks
11. Submission Requirements
Students must submit:
 GitHub repository link
 Short report describing individual roles
 Power point presentation (introduction, architectural layer, requirements on UI and API,
Demo screenshots …
 Presentation Date is December 29,2025 at 8:30 AM

Page 4 of 4

Common questions

Powered by AI

Requiring communication between frontend and backend via JSON affects the project design by standardizing the data exchange format, ensuring both sides understand the data structure. JSON is lightweight, easy to read, and well-suited for RESTful APIs due to its text-based nature, enabling efficient data exchange with low overhead. It supports interoperability across different programming languages used in the frontend and backend, facilitating seamless integration and reducing potential parsing errors .

The backend of the project employs a technology stack that includes Spring Boot as the framework, Java as the programming language, Spring Data JPA for ORM, PostgreSQL for database management, and Spring Security with JWT for security. The frontend uses Next.js/React for the framework, with JavaScript or TypeScript as the language, and CSS/Tailwind CSS/Bootstrap for styling. This combination influences the implementation strategy by aligning the strengths of each technology: Spring Boot for robust API development and security, and Next.js for dynamic rendering and user interface efficiency .

DTOs play a significant role in structuring data passed between the backend and frontend by decoupling the internal data structures from the network transmission format. In the discussed project, DTOs allow for the clean segregation of data transformations, contributing to a clear API contract between services, which helps maintain a consistent and optimized data model. This separation minimizes the risk of exposing sensitive information and ensures that only relevant data is conveyed, enhancing both security and performance .

The project specifies implementing JWT-based authentication to manage user authentication and authorization. It is critical to hash passwords to protect sensitive user credentials from being compromised. The specified method for password hashing is BCrypt, which provides a strong hashing mechanism making it difficult for potential adversaries to reverse-engineer passwords even if they gain access to the hash .

The backend development for the project is required to use Spring Boot as its framework and must be implemented using Java. The key components integral to this development are the adoption of Spring Data JPA for ORM, PostgreSQL for database, Spring Security with JWT for security, and Swagger/OpenAPI for API documentation. A layered architecture is emphasized to separate concerns effectively: the controller layer handles REST endpoints, the service layer includes business logic, the repository layer manages database access, and the entity/model layer contains JPA entities. This separation aids in maintainability, scalability, and testing .

Requiring CRUD operations with pagination, sorting, and searching necessitates a comprehensive design of API endpoints. Each CRUD operation must have clear, resource-oriented endpoints that support various parameters for pagination (such as page number and size), sorting (such as sort fields and order), and searching (such as query parameters). This design challenge ensures efficient data handling and precise client requests handling, catering to diverse user requirements without overloading the server. It enhances user experience by providing flexibility and responsiveness in data interactions .

Error handling is pivotal in maintaining a stable and reliable system, contributing directly to user satisfaction and trust. This project stipulates global exception handling and meaningful error responses using @ControllerAdvice in Spring Boot, ensuring errors are caught and processed consistently across the application. Providing structured error messages and appropriate HTTP status codes enhances debugging and informs users accurately about issues encountered, aiding troubleshooting. Well-orchestrated error management shields users from technical complexities, maintaining seamless interactions and improving overall user experience .

The recommended practice for managing environment variables, especially in API and frontend integration, is to use them for storing sensitive information such as API URLs, ensuring that configuration details are separated from the application code. This practice improves security by avoiding hardcoding credentials or endpoints in the codebase, thereby reducing the risk of accidental exposure or codebase security breaches. By enacting these practices, teams can maintain multiple environments (such as development and production) with differing configurations without altering the code, facilitating easier deployments and updates .

Adhering to a layered architecture in the Spring Boot application is essential for systematically managing complexities, promoting separation of concerns, enhancing modularity, and making the application easier to understand and maintain. This architecture facilitates independent development, testing, and maintenance of each layer, thus improving the lifecycle management of the application. However, challenges can emerge, such as increased initial setup complexity, managing inter-layer dependencies, potential performance overhead due to added abstraction layers, and ensuring consistency across layers, which requires diligent design and clear documentation .

GitHub plays a dual role in this project: it facilitates collaboration among students and serves as a tool for individual assessment. Collaborative features such as commit history, pull requests, and issue tracking allow team members to work simultaneously and transparently, while individual contributions are assessed through commit authorship and histories. This ensures accountability and fair evaluation of each participant's involvement. The guidelines particularly highlight using meaningful commit messages, feature branches, and regular commits to maintain project continuity and traceability .

You might also like