Skip to content

RESTful API built with Java via Spring Boot that lets you manage and explore quotes by feminist and pioneering women throughout history

Notifications You must be signed in to change notification settings

Lizar22/fem-cloud-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🟪 FemCloud API

FemCloud API is a RESTful API built with Spring Boot that lets you manage and explore quotes by feminist and pioneering women throughout history. It's designed as a learning project and a tribute to the words and ideas that inspired generations of women and men.


📚 Table of Contents


🚀 Project Purpose

This project helps you:

  • Learn how to build a complete CRUD REST API using Spring Boot
  • Understand the MVC architecture (Controller – Service – Repository)
  • Connect a Spring Boot app to a MySQL database
  • Practice API testing with Postman
  • Promote historical and inspirational quotes from impactful women

✨ Thematic Focus

This API is dedicated to preserving and sharing quotes by feminist thinkers, activists, and historical pioneers.

Examples of influential women:

  • Simone de Beauvoir
  • Wu Zetian
  • Rosa Luxemburg
  • Audre Lorde
  • Christine de Pizan
  • Clara Campoamor
  • Aspasia of Miletus
  • Frida Kahlo
  • Angela Davis
  • Nana Asma’u
  • Olympe de Gouges
  • Virginia Woolf
  • Im Yunjidang
  • Malala Yousafzai
  • Qiu Jin
  • Dolores Ibárruri
  • Hypatia of Alexandria

Quotes should reflect feminist thought, social change, human rights, or historical relevance.


🛠️ Technologies & Tools

  • ✅ Java 21
  • ✅ Spring Boot
  • ✅ MySQL
  • ✅ Jakarta Bean Validation
  • ✅ Maven
  • ✅ IntelliJ IDEA
  • ✅ Postman
  • ✅ Git & GitHub
  • ✅ Trello (for task tracking)

🗂️ Project Structure

The project follows a clean 3-layer MVC architecture:

src/
├── main/
│   └── java/com/femcloudapi
│        ├── controllers
│        ├── dtos    
│        ├── exceptions          
│        ├── models      
│        ├── repositories           
│        └── services   
├── resources/
│   └── application.properties
│   └── data.sql
├── test/
│   └── application-mysql.properties    


📋 Functional Requirements

  • View all quotes
  • View a quote by ID
  • Create a new quote
  • Update an existing quote
  • Delete a quote

🔌 API Endpoints

Method Endpoint Description
GET /quotes Get all quotes
GET /quotes/{id} Get a specific quote by ID
POST /quotes Add a new quote
PUT /quotes/{id} Update an existing quote
DELETE /quotes/{id} Delete a quote

📦 Example JSON for Creating/Updating a Quote

{
  "text": "I am not free while any woman is unfree, even when her shackles are very different from my own.",
  "author": "Audre Lorde",
  "year": 1981
}

⚠️ Error Handling

When a quote is not found by ID, the API responds with a structured JSON error and a 404 status code:

{
    "message": "Quote not foud with id 99",
    "status": 404,
    "errorCode": "PRODUCT_NOT_FOUND",
    "path": "/quotes/99",
    "timestamp": "2025-07-20 23:49:18"
}

This is handled via a custom exception QuoteNotFoundException, a GlobalExceptionHandler and an ErrorResponse class.


🧪 Testing with Postman

  1. Run the application with your IDE (e.g., IntelliJ, VS Code)
  2. Use Postman to test all API endpoints
  3. Ensure your MySQL database is running and configured
  4. Update application.properties or application.yml with correct DB settings

✅ Non-Functional Requirements

  • Clean MVC architecture
  • Connection to MySQL database
  • Clean and maintainable code
  • Error handling with custom messages
  • Manual API testing via Postman
  • Input validation using @Valid

💡 Possible Future Improvements

  • Pagination and search by author
  • Swagger/OpenAPI documentation
  • Spring Security authentication

🧠 What I Learned

  • Building REST APIs with Spring Boot
  • Use of JpaRepository for CRUD operations
  • Structuring code using MVC pattern
  • Error handling using custom exceptions
  • Testing endpoints with Postman
  • Integration tests via H2 and Mysql profiles

📁 Suggested Directory Structure

src/
├── main/
│   └── java/com/femcloudapi
│        ├── controllers
│        ├── dtos    
│        ├── exceptions          
│        ├── models      
│        ├── repositories           
│        └── services   
├── resources/
│   └── application.properties
│   └── data.sql
└── test/
│   └── application-mysql.properties

🧾 License

This project is part of the FemCoders educational program.


🙌 Created with 💜 by Lizar22

FemCloud API is more than just a CRUD project — it's a tribute to feminist voices and an essential part of my Spring Boot learning journey, combining backend development practice with the creation of powerful, respectful software.

About

RESTful API built with Java via Spring Boot that lets you manage and explore quotes by feminist and pioneering women throughout history

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages