Welcome to Blogify, where words come to life and stories find their digital home! Blogify is more than just a blog app; it's a vibrant community of passionate writers, storytellers, and readers coming together to share, explore, and engage in the art of blogging.
This repository contains essential information and guidelines for understanding and contributing to our project. Please read through this README to familiarize yourself with our Definitions Of Done (DoD) and find links to our frontend and backend repositories.
The Definitions Of Done (DoD) for our project are aligned with the professor's requirements:
-
Authentication & Authorization System:
- a) Visitors can access the blog without authentication.
- b) Users must be logged in to publish an article.
-
Data Collection:
- Implement a robust system for collecting and managing data.
-
Recommendation System:
- Develop a recommendation system to enhance the user experience.
The AI feature enhances user experience by providing personalized topic suggestions. Here's how it works:
- Only authenticated users have access to the AI feature.
- The AI suggests topics based on two criteria:
- Personal Preferences: This aspect is tailored to the individual user, considering their posts, visited posts, and the categories of topics they've chosen during their subscription.
- Community Preferences: This aspect considers the overall community's preferences, analyzing existing categories, as well as the engagement metrics like likes and dislikes on posts.
Uses the Java Spring Boot framework and Postgresql with POJA.
The principle of POJA is that it deploys the application directly. So you can check in the GitHub Actions and search for the deployed app link.
-
Depending on the OS, download and install (Java) JDK 17
-
Configure JAVA_HOME
# In postgreSQL CLI, run:
CREATE DATABASE <DB_NAME>;
# Then update the env variable "spring_datasource_url" value to : jdbc:postgresql://localhost:5432/{DB_NAME}- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY
- aws_eventBridge_bus
- aws_region
- aws_s3_bucket
- aws_ses_source
- aws_sqs_queue_url
- firebase_private_key
- spring_datasource_password
- spring_datasource_url
- spring_datasource_username
The coding standard used is Google java style guide
The linter used is checkstyle, configured with gradle.
The formatter used is Google-java-format, executed with the script format.sh as follows:
./format.sh- To clean previous builds:
./gradlew clean- To build:
./gradlew assemble- To run tests:
./gradlew test- To run the application:
# Set Environment variables on CLI and then run:
./gradlew bootRun- Recommendation system AI
- Blogify posts list
- A more structured and well-designed Blogify
Help us to find bugs ! Put it in the issues :
We welcome contributions from the community! If you're interested in contributing to our project, please follow these steps:
- Fork the repository.
- Create a new branch for your feature or bug fix.
- Make your changes and ensure they meet the Definitions Of Done.
- Test your changes thoroughly.
- Create a pull request, detailing the changes you've made.
If you have any questions or need assistance, feel free to reach out to us through the project's GitHub issues.
Thank you for being a part of The Maestro Project - Blogify! 🚀