π Live Demo π
Features β’ Demo β’ Installation β’ Tech Stack β’ Configuration
Smart Contact Manager is a comprehensive, cloud-based contact management solution built with Spring Boot. It enables users to securely store, organize, and manage their contacts with advanced features like cloud storage integration, email verification, OAuth2 authentication, and SMS notifications.
- π Secure Authentication - Email/Password login with email verification
- π OAuth2 Integration - Sign in with Google and GitHub
- π€ User Profile Management - Update profile information and profile pictures
- π± Contact Management - Add, edit, delete, and search contacts
- πΈ Cloud Image Storage - Profile and contact images stored on Cloudinary
- β Bookmark Contacts - Mark important contacts as favorites
- π₯ Contact Groups - Organize contacts into custom groups
- π§ Email Integration - Send emails directly to contacts
- π¬ SMS Notifications - Send SMS via Twilio integration
- π Advanced Search - Search contacts by name, email, or phone
- π Dashboard Analytics - View contact statistics and insights
- Password encryption with BCrypt
- Email verification for new accounts
- Secure session management
- CSRF protection
- SQL injection prevention
Experience the application live at: https://smartcontactmanager-gd9j.onrender.com
- Java 21 - Programming language
- Spring Boot 4.0.1 - Application framework
- Spring Security - Authentication & authorization
- Spring Data JPA - Database ORM
- Hibernate - JPA implementation
- Maven - Dependency management
- Thymeleaf - Server-side template engine
- HTML5/CSS3 - Markup and styling
- JavaScript - Client-side interactivity
- Bootstrap - Responsive UI framework
- MySQL - Relational database
- Aiven Cloud - Managed MySQL hosting
- Cloudinary - Image storage and CDN
- Gmail SMTP - Email service
- Firebase Authentication - SMS OTP verification
- Google OAuth2 - Social authentication
- GitHub OAuth2 - Social authentication
- Lombok - Reduce boilerplate code
- Spring Validation - Input validation
- Spring DevTools - Development utilities
- Spring Dotenv - Environment variable management
Ensure you have the following installed:
- Java 21 or higher
- Maven 3.x or higher
- Git
git clone https://github.com/yourusername/SmartContactManager.git
cd SmartContactManager- Copy the example environment file:
cp .env.example .env- Edit
.envand add your credentials (see Configuration section)
./mvnw clean install./mvnw spring-boot:runOpen your browser and navigate to:
http://localhost:8080
Create a .env file in the root directory with the following variables:
AIVEN_HOST=your-mysql-host.aivencloud.com
AIVEN_DB=your-database-name
AIVEN_USER=your-username
AIVEN_PASSWORD=your-passwordEMAIL_USERNAME=your-email@gmail.com
EMAIL_PASSWORD=your-app-passwordNote: Use Google App Password instead of your regular password
Google OAuth2:
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secretGet credentials from Google Cloud Console
GitHub OAuth2:
GITHUB_CLIENT_ID=your-github-client-id
GITHUB_CLIENT_SECRET=your-github-client-secretGet credentials from GitHub Developer Settings
CLOUDINARY_CLOUD_NAME=your-cloud-name
CLOUDINARY_API_KEY=your-api-key
CLOUDINARY_API_SECRET=your-api-secretSign up at Cloudinary
FIREBASE_PROJECT_ID=smart-contact-manager-72b91
FIREBASE_PRIVATE_KEY=your-firebase-private-key
FIREBASE_CLIENT_EMAIL=firebase-adminsdk-xxxxx@smart-contact-manager-72b91.iam.gserviceaccount.comSetup Firebase:
- Go to Firebase Console
- Click "Generate new private key"
- Copy
project_id,private_key, andclient_emailfrom the JSON to your.envfile - Enable Authentication β Phone provider in Firebase Console
- Sign up at Aiven.io
- Create a new MySQL service
- Copy the connection details to your
.envfile - The application will automatically create tables on first run
- Install MySQL locally
- Create a database:
CREATE DATABASE scm;- Update
.envwith local credentials
- Navigate to the registration page
- Fill in your details (name, email, password)
- Verify your email address
- Log in to access your dashboard
- Go to "Add Contact" from the dashboard
- Fill in contact details
- Upload a profile picture (optional)
- Assign to a group (optional)
- Save the contact
- View All Contacts - See all your saved contacts
- Search - Find contacts quickly by name, email, or phone
- Edit - Update contact information
- Delete - Remove contacts permanently
- Bookmark - Mark important contacts as favorites
- Groups - Organize contacts into categories
SmartContactManager/
βββ src/
β βββ main/
β β βββ java/com/scm/
β β β βββ config/ # Configuration classes
β β β βββ controllers/ # REST & MVC controllers
β β β βββ entities/ # JPA entities
β β β βββ forms/ # Form DTOs
β β β βββ helpers/ # Utility classes
β β β βββ repositories/ # Data access layer
β β β βββ services/ # Business logic
β β β βββ SmartContactManagerApplication.java
β β βββ resources/
β β βββ static/ # CSS, JS, images
β β βββ templates/ # Thymeleaf templates
β β βββ application.properties
β βββ test/ # Unit tests
βββ screenshorts/ # Application screenshots
βββ .env # Environment variables (not in git)
βββ .env.example # Environment template
βββ pom.xml # Maven dependencies
βββ README.md # Project documentation
- Never commit
.envfile to version control - Use strong passwords for database and email
- Enable 2FA on third-party services (Google, GitHub, Twilio)
- Regularly update dependencies
- Use HTTPS in production
- Keep API keys and secrets secure
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Your Name
- GitHub: @yourusername
- Email: your.email@example.com
- Spring Boot team for the amazing framework
- Aiven for reliable MySQL hosting
- Cloudinary for image storage solutions
- All open-source contributors
For support, email your.email@example.com or open an issue in the repository.
Made with β€οΈ using Spring Boot
β Star this repository if you find it helpful!



