Smart Contact Manager (SCM) 2.0 is a full-fledged web application built with Java and Spring Boot, designed to help you manage your contacts efficiently. It offers a range of features from basic contact storage to advanced functionalities like social logins, cloud-based image storage, and direct emailing.
- 👤 User Management:
- User Signup with email and password
- Email verification via link
- Signup/Login with Google and GitHub (OAuth)
- View and Edit own profile details
- 📞 Contact Management:
- Add contacts with pictures
- Contact pictures uploaded to cloud storage (AWS/Cloudinary)
- View all contacts in a paginated list
- View detailed contact information
- Update existing contact details
- Delete contacts
- Search for specific contacts
- Mark contacts as favorites ⭐
- 📧 Email Integration:
- Compose and send emails directly from the application
- Emails can include text and attachments
- 📊 Data Management:
- Export contact data to Excel
- 🎨 User Interface:
- Dark and Light theme options 🌗
- User-friendly interface built with TailwindCSS and Flowbite components
- 🗣️ Feedback:
- Option for users to provide feedback
This project leverages a modern technology stack to deliver a robust and scalable application:
- Backend:
- ☕ Latest Spring Boot
- 🧱 Spring Framework
- 🌐 Spring MVC
- 🗃️ Spring Data JPA (Hibernate for ORM)
- 🔐 Spring Security (for authentication and authorization)
- 📧 Java Email API
- Frontend:
- 🍃 Thymeleaf (Server-side template engine)
- 🎨 TailwindCSS
- 🧩 Flowbite Components
- <0xF0><0x9F><0xAA><0xB2> JavaScript
- Database:
- 🐘 MySQL / PostgreSQL
- Authentication:
- 🔑 OAuth 2.0 (for Google and GitHub login)
- File Storage:
- ☁️ AWS SDK / Cloudinary SDK
- Reporting:
- 📄 Apache POI or similar (for Excel export)
- Other Tools:
- ✔️ Validation (Bean Validation)
-
Prerequisites:
- Java JDK (version 17 or higher recommended)
- Maven
- MySQL or PostgreSQL database server
- AWS S3 Bucket or Cloudinary account (for image storage)
- Google Cloud Platform project and GitHub OAuth App credentials (for social login)
- Email server credentials (e.g., Gmail SMTP)
-
Clone the repository:
git clone [https://github.com/your-username/smart-contact-manager.git](https://github.com/your-username/smart-contact-manager.git) cd smart-contact-manager -
Configure the application:
- Open
src/main/resources/application.properties(orapplication.yml). - Update the database connection details (URL, username, password).
- Configure your cloud storage (AWS/Cloudinary) credentials.
- Set up OAuth 2.0 client IDs and secrets for Google and GitHub.
- Configure email sending properties.
- Open
-
Build the project:
mvn clean install
-
Run the application:
mvn spring-boot:run
Alternatively, you can run the packaged JAR file from the
targetdirectory.
The application should now be accessible at http://localhost:8080 (or the port configured in application.properties).
- Sign Up: Create a new account using your email and password, or sign up with Google/GitHub.
- Verify Email: Click the verification link sent to your email.
- Login: Access your account.
- Manage Contacts:
- Add new contacts with their details and a profile picture.
- View your list of contacts.
- Click on a contact to see more details, edit, or delete them.
- Search for contacts using the search bar.
- Mark your important contacts as favorites.
- Send Emails: Compose and send emails directly to your contacts from their detail page.
- Export Data: Export your contact list to an Excel file.
- Profile: Update your personal details and change your password.
- Theme: Switch between dark and light themes for comfortable viewing.
- Feedback: Share your thoughts and suggestions through the feedback form.
Contributions are welcome! If you'd like to contribute to this project, please follow these steps:
- Fork the repository.
- Create a new branch (
git checkout -b feature/your-feature-name). - Make your changes.
- Commit your changes (
git commit -m 'Add some feature'). - Push to the branch (
git push origin feature/your-feature-name). - Open a Pull Request.
Please make sure your code adheres to the project's coding standards.
This project is licensed under the MIT License (or choose another license and create a LICENSE file).
Happy Contact Managing! 😊