A comprehensive contact management system that allows users to securely store, organize, and share their contacts. The application features user authentication, email verification, contact sharing with OTP protection, and profile management.
- 🔐 User Authentication: Secure registration and login
- ✉️ Email Verification: Mandatory verification before adding contacts
- 👥 Contact Management: Add, view, edit, and manage contacts
- 🔗 Secure Sharing: Share contacts via links protected with 6-digit OTP
- 🔒 Account Security: Multiple password update options and account deletion
- 📸 Profile Management: Update profile photo and personal information
- ⏳ Expiring Links: Set expiration times for shared contacts
- Framework: Spring Boot 3.x
- Security: Spring Security with JWT authentication
- Database: MySQL with Spring Data JPA
- File Storage: ImageKit for profile photos
- Email: Java Mail Sender for verification emails
- API: RESTful architecture
- Language: TypeScript
- Framework: React 18
- Routing: React Router 6
- State Management: Context API
- UI: Custom CSS components
- Java 17+
- Node.js 16+
- MySQL 8.0+
- ImageKit account (for media storage)
- Clone the repository:
git clone https://github.com/yourusername/contact-manager.git cd contact-manager/backend - Configure application properties:
# src/main/resources/application.properties spring.datasource.url=jdbc:mysql://localhost:3306/contact_db spring.datasource.username=your_db_user spring.datasource.password=your_db_password jwt.secret=your_jwt_secret_key imagekit.private-key=your_imagekit_private_key imagekit.public-key=your_imagekit_public_key mail.username[email protected] mail.password=your_email_password
- Build and run:
./mvnw spring-boot:run
- Navigate to frontend directory:
cd ../frontend - Install dependencies:
npm install
- Configure environment variables:
# .env REACT_APP_API_BASE_URL=http://localhost:8080/api REACT_APP_IMAGEKIT_URL=https://ik.imagekit.io/your_id
- Start development server:
npm start
- Contact Management: Main contact management interface
- Edit Contact: Adding/editing a contact
- Share Contact: Generating a secure share link
- Share View: Viewing a shared contact
- Profile: User profile overview
- Update Profile: Updating profile information
- Verify Profile: Email verification interface
- Update Password: Changing password with current credentials
- Update Password OTP: Password update via OTP verification
- Delete Account: Account deletion confirmation
- Shared Contact View: Viewing shared contact details with OTP protection
- Registration: Create a new account with email and password
- Verification: Check your email for verification link
- Login: Access your dashboard after verification
- Add Contacts: Click "Add Contact" to create new entries
- Share Contacts: Select a contact and generate secure share link
- Manage Profile: Update your name, profile photo, or password in Settings
- Secure Sharing: Recipients need OTP to view shared contacts
| Endpoint | Method | Description |
|---|---|---|
/ |
GET | Health check |
/register |
POST | User registration |
/login |
GET | User login |
/logout |
GET | User logout |
/upload |
POST | Upload profile photo |
/delete/{ID} |
GET | Delete uploaded file |
/verifysharecontact |
GET | Verify shared contact with OTP |
| Endpoint | Method | Description |
|---|---|---|
/ |
GET | Secure authentication check |
/generateotp/{userID} |
GET | Generate OTP for verification |
/verifyotpuserId |
GET | Verify OTP |
/showuser |
GET | Show current user details |
/showuserbyid/{userID} |
GET | Show user by ID |
/updateprofile/{userID} |
PUT | Update user profile |
/updateoldpassword/{userID} |
PUT | Update password with old password |
/updatepassword/{userID} |
PUT | Update password |
/deleteuser/{userID} |
DELETE | Delete user account |
/isverified/{userID} |
GET | Check if profile is verified |
/createcontact/{userID} |
POST | Create new contact |
/updatecontact/{userID} |
PUT | Update contact |
/showallcontact/{userID} |
GET | Show all contacts |
/deletecontact/{userID} |
DELETE | Delete contact |
/contactpage |
GET | Paginated contact list |
/activatesharecontact/{userID} |
GET | Activate contact sharing |
/deletesharecontact/{userID} |
GET | Delete shared contact |
| Path | Description |
|---|---|
/ |
Landing page |
/login |
Login page |
/feature |
Feature page |
/contact/share/:contactId |
Share contact page |
/contact/sharen |
Share contact error page |
/about |
About page (Protected) |
/logout |
Logout page (Protected) |
/contacts |
Contact management page (Protected) |
/profile |
User profile page (Protected) |
/tags |
Tags management page (Protected) |
/settings |
Settings page (Protected) |
* |
Redirects to landing page |
- Fork the repository
- Create a new branch (
git checkout -b feature/your-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin feature/your-feature) - Open a pull request


