Skip to content

Phase 6 – Final Projects (Ongoing)

Project 1: Complete CRUD with Authentication

  • Objective: Build a robust RESTful API with secure authentication and testing.
  • Technologies: Spring Boot, Spring Data JPA (PostgreSQL), Spring Security (JWT), JUnit 5, Testcontainers.
  • Features: CRUD for entities (e.g., tasks, users), authentication with roles (ADMIN, USER), documentation with Swagger.
  • Optional: Add a Thymeleaf interface to view/manage tasks.
  • Example: API to manage projects (entities: Project, Task, User) with protected endpoints.

Project 2: File Upload

  • Objective: Add file upload functionality to the API from Project 1.
  • Technologies: Spring Boot (MultipartFile), Amazon S3 or local storage, file validation.
  • Features: Upload images/documents associated with tasks, validate type/size.
  • Example: Allow uploading attachments (e.g., PDF, PNG) for tasks in the API.

Project 3: Cloud Deployment

  • Objective: Deploy the API to a cloud platform with CI/CD.
  • Technologies: Railway, Heroku, or AWS (Elastic Beanstalk), GitHub Actions, Docker.
  • Features: Package as JAR/Docker, configure environment variables, automate deployment.
  • Optional: Implement caching with Redis to optimize frequent queries.
  • Example: Deploy the project API on Railway with PostgreSQL and CI/CD.

Project 4: Microservices

  • Objective: Split the API from Project 1 into orchestrated microservices.
  • Technologies: Spring Cloud (Eureka, Gateway), Docker Compose, REST for communication.
  • Features: Microservices for Tasks and Users, with service discovery.
  • Optional: Use RabbitMQ for asynchronous communication between microservices.
  • Example: Separate task and user logic into two services, orchestrated with Docker.

Project 5: External API Integration

  • Objective: Consume an external API to enhance functionality.
  • Technologies: Spring RestTemplate or WebClient, API authentication (e.g., OAuth2).
  • Features: Integrate with a public API (e.g., send notifications via email with SendGrid).
  • Optional: Add a GraphQL query to retrieve tasks/users and store metadata in MongoDB.
  • Example: Add email notifications for task completion.

Portfolio Best Practices

  • Git: Commits per feature (e.g., feature/crud, feature/upload), clear branches.
  • Documentation: README with description, setup, endpoints, deployment, and screenshots.
  • Publish: Host on GitHub with an open-source license (e.g., MIT).

Resources