Home - FatinaAlTaherr/HopeConnect GitHub Wiki
HopeConnect is a platform dedicated to empowering orphanages, sponsors, and volunteers by simplifying and enhancing the management of orphan care activities. The project fosters transparency, accountability, and collaboration through technology, providing a centralized space for user management, sponsorship, resource tracking, and community engagement.
- User Management: Streamlined onboarding and role-based access control for admins, sponsors, and orphanage staff.
- Orphanage & Orphan Records: Comprehensive database of orphanages and their respective children, including personal, educational, and medical information.
- Sponsorship Management: Sponsors can view, select, and track the progress of orphans they support.
- Donation Tracking: Secure, transparent tracking of donations, with history logs and usage details.
- Volunteer Coordination: Tools to manage volunteer activities, schedules, and communication.
- Partnership and Events: Organize, manage, and collaborate on events involving children, staff, and volunteers.
- Real-time Chat System: Two-way communication between sponsors, staff, and volunteers allows efficient collaboration. Each group has its own dedicated chat channel per event.
-
External APIs:
- OpenCage Geocoding API: Converts addresses into geographic coordinates to calculate the distance between volunteers and service request locations.
- OpenAI ChatGPT API: Generates detailed and compassionate orphan reports based on their personal and medical data.
- JavaMailSender (Spring): Sends verification and notification emails to donors, partners, and orphanage owners.
- Stripe API: Manages secure donation payments for emergency campaigns and long-term sponsorships.
- 📝 For higher resolution, download the UML file from Here!
HopeConnect is built using a modular and layered architecture to ensure scalability and clean separation of concerns. The main components are:
- Backend: Built using Spring Boot, delivering RESTful APIs to manage all core logic and data.
- Database: Uses MySQL, providing a reliable and scalable relational database for secure data storage.
- Messaging: Real-time messaging is powered by RabbitMQ, ensuring asynchronous and event-driven communication.
- External APIs: Integrates several third-party services to enhance functionality:
Spring Boot accelerates backend development by offering auto-configuration, eliminating the need for excessive setup. It supports embedded servers, making deployment straightforward. Combined with Spring libraries for security, data access, and messaging, Spring Boot is ideal for building modular and scalable applications like HopeConnect.
A Layered Architecture is used:
- Controller Layer – manages HTTP requests.
- Service Layer – handles business logic.
- Repository Layer – interfaces with the database.
- Model/DTO Layers – represent and transfer data. This structure enhances maintainability, testability, and scalability.
- RabbitMQ: Chosen for reliable, asynchronous communication — ideal for the internal chat system.
- MySQL: A widely-used, relational DBMS that is reliable, performant, and easy to manage in both local and cloud environments.
-
Root Directory:
-
pom.xml
: The Maven Project Object Model file, which includes project dependencies, plugins, and build configurations. -
.gitignore
: Specifies files and directories that should be ignored by Git. -
README.md
: An overview and instructions for the project. -
.idea
,.mvn
,mvnw
,mvnw.cmd
,GT.iml
: These files are associated with the IDE (IntelliJ IDEA) and Maven wrapper for project configuration.
-
-
src/main/java/com/HopeConnect/HC:
- controllers: Handles HTTP requests and API routing.
- DTO: Used for data transfer between layers.
- exceptions: Centralized error handling.
- models: Entity classes for orphans, users, orphanages, donations, etc.
- repositories: Spring Data JPA interfaces.
- security.config: Authentication, authorization, and RabbitMQ config.
- services: Business logic for each feature.
- Views: Dynamic content rendering based on user roles.
- HCApplication: Main entry point.
Note: Each directory is further divided into subdirectories for each feature of the application, furthermore each subdirectory contains specific classes to that feature, as shown in figure(2).
-
src/main/resources:
-
application.properties
: DB configs, security, RabbitMQ settings, etc.
-
-
target: Build artifacts and compiled classes.
-
Images and Miscellaneous Files:
- Images, media files, and documentation files for use in frontend or README.
This structure ensures a clear separation of concerns, making the project modular, maintainable, and scalable. Each directory has a specific role, aligning with Java and Spring Boot development best practices, and is further divided into subdirectories for each feature of the application, promoting better organization and easier management of the codebase.
API is fully documented and accessible via Postman. Visit the following link once the backend server is running: API documentation. This documentation includes details about all available endpoints, request parameters, response formats, and example requests and responses.
🎥 Click here to view the demo 🚀 View Demo .
Thank you for supporting HopeConnect and helping us build a better, more connected future for children in need. 💜 Together, we bring hope.