π Live Demo: https://contacts.workly.ink
A modern, production-grade contact management platform β inspired by Google Contacts β built with Next.js 15 and TypeScript. Designed for reliability, security, and exceptional user experience, Workly Contacts demonstrates enterprise-ready frontend development practices with a focus on performance and accessibility.
Workly Contacts is a full-featured frontend application for a modern contact management platform. It provides an intuitive interface for secure authentication, comprehensive profile and session management, real-time activity tracking, and complete contact lifecycle operations. Built with Next.js 15, TypeScript, and modern React patterns, it follows component-driven architecture principles, implements state management with Zustand, and integrates advanced UI features including smooth animations, responsive design, and robust form validation. The application seamlessly connects with a scalable Node.js backend to deliver a fast, secure, and user-friendly contact management experience.RetryClaude can make mistakes. Please double-check responses.
- Local Authentication: Secure login and signup with email and password
- OAuth Integration: Sign in seamlessly using Google OAuth
- Password Management: Reset password via secure forgot password flow with email verification
- Multi-Device Sessions: Support for up to 3 concurrent device logins
- Hybrid Authentication System: Combination of session-based and token-based authentication with token rotation
- Access & Refresh Tokens: Automatic token rotation for enhanced security
- Session Management: Token revocation and session blacklisting capabilities
- Robust Account Center: Centralized hub for managing all account settings and security features
- Security Dashboard: Comprehensive overview of account security status including:
- Last password change date
- Last login timestamp and location
- Last login device information
- Account creation date
- Active sessions monitoring
- Recent security activity log
- Advanced Threat Protection: Multi-layer security system to prevent bot attacks and unauthorized access:
- Email notifications after 3 failed login attempts
- reCAPTCHA challenge activated after 3 failed attempts
- Account lockout after 9 failed login attempts
- Secure account unlock via password reset
- Automatic account removal if unlock is not completed
- Activity Monitoring: Track and review suspicious activities with detailed activity logs
- Session Management: View and manage active sessions across all logged-in devices with remote logout capability
- Password Security: Change password using old password verification
- Account Deletion: Schedule account deletion with 7-day grace period before permanent removal
- Profile Management: View and edit personal information including:
- Basic information (name, bio, etc.)
- Profile avatar
- Contact information
- Multiple addresses
- Password & Security Page: Dedicated section for managing security settings and monitoring account safety
- CRUD Operations: Create, read, update, and delete contacts with ease
- Trash Management: Soft delete contacts with 28-day retention and recovery options
- Permanent Deletion: Permanently remove contacts from trash
- Favorites: Mark important contacts as favorites for quick access
- Labels & Organization: Create custom labels to organize contacts efficiently
- Label Management: Create, update, and delete labels; manage contacts within specific labels
- Bulk Operations: Perform actions on multiple contacts simultaneously
- Advanced Search: Search contacts by name, email, or phone number
- Unsaved Changes Protection: Discard feature prevents data loss from accidental browser or tab closure
- Export Contacts: Export single or multiple contacts in multiple formats:
- JSON
- CSV
- vCard
- Import Contacts: Import contacts using CSV or vCard files with standardized templates
- Print Functionality: Print contact information directly from the dashboard
- Forgot Password Rate Limiting: Prevents abuse of password reset functionality
- OTP Resend with Exponential Backoff: Smart retry mechanism for OTP verification in both signup and password reset flows
- Unverified Account Cleanup: Automatic removal of unverified accounts after 24 hours
- Automatic Data Cleanup: Trash and activity logs automatically deleted after 28 days
- OAuth Password Enforcement: Users signing up via OAuth must set a password before accessing the system
- Responsive Design: Fully responsive UI that works seamlessly across all devices
- User Security-Centric: Every feature designed with user security as the top priority
- Reliable & Secure: Comprehensive security measures to protect user data and accounts
- Email Notifications: Stay informed about account activities and security events
- Next.js 15.5 - React framework for production with server-side rendering and static site generation
- TypeScript - Type-safe JavaScript for enhanced developer experience and code reliability
- Tailwind CSS - Utility-first CSS framework for rapid UI development
- shadcn/ui - Re-usable component library built with Radix UI and Tailwind CSS
- Framer Motion - Production-ready animation library for React
- GSAP - Professional-grade animation platform for complex animations
- Lucide React - Beautiful and consistent icon toolkit
- React Icons - Popular icon library with multiple icon sets
- Google Material Icons - Google's official material design icons
- Zustand - Lightweight and flexible state management solution
- Zod - TypeScript-first schema validation library
- Axios - Promise-based HTTP client for API requests
- reCAPTCHA - Google's bot protection service for enhanced security
- Node.js 18.x or higher
- npm or yarn package manager
- Git
-
Clone the repository
git clone https://github.com/Abdullah00001/workly-contacts-client.git cd workly-contacts-client -
Install dependencies
npm install # or yarn install -
Set up the backend server
Clone and set up the backend repository:
git clone https://github.com/Abdullah00001/workly-contacts-server.git cd workly-contacts-serverFollow the backend installation instructions in the server repository
-
Set up environment variables
Create a
.env.localfile in the root directory and add the following variables:NEXT_PUBLIC_API_BASE_URL=http://localhost:5000/api/v1 API_BASE_URL=http://localhost:5000/api/v1 NEXT_PUBLIC_RECAPTCHA_SITE_KEY=your_recaptcha_site_key
-
Start the development server
npm run dev # or yarn dev -
Open your browser
Navigate to http://localhost:3000
npm run build
npm run start
# or
yarn build
yarn startNote: Make sure the backend server is running before starting the frontend application.
| Script | Description |
|---|---|
npm run dev |
Start development server |
npm run build |
Build for production |
npm run preview |
Preview production build |
npm run lint |
Run ESLint |
npm run lint:fix |
Fix ESLint issues |
npm run format |
Format code with Prettier |
npm run type-check |
Run TypeScript type checking |
.
|
βββ CHANGELOG.md
βββ CODE_OF_CONDUCT.md
βββ components.json
βββ CONTRIBUTING.md
βββ eslint.config.mjs
βββ LICENSE
βββ next.config.ts
βββ next-env.d.ts
βββ package.json
βββ package-lock.json
βββ postcss.config.mjs
βββ public
βββ README.md
βββ SECURITY.md
βββ src
βββ tsconfig.json
βββ public/
β βββ fonts/
β βββ videos/
βββ src/
βββ app/
β βββ (account-center)/
β β βββ accountscenter/
β β βββ security/
β βββ (activity)/
β β βββ activity/
β β βββ [objectId]/
β βββ (auth)/
β β βββ auth/
β β βββ clear-session/
β β βββ create-password/
β β βββ login/
β β βββ recover/
β β βββ signup/
β β βββ unlock/
β β β βββ change/
β β β βββ [uuid]/
β β βββ verify/
β βββ (dashboard)/
β β βββ dashboard
β β βββ favorite
β β βββ label/
β β β βββ [labelId]
β β βββ new/
β β βββ person/
β β β βββ [objectId]/
β β βββ trash/
β βββ (public pages)/
β βββ contact/
β βββ help/
β βββ privacy/
β βββ terms/
βββ components/
β βββ common/
β βββ ui/
βββ consts/
βββ features/
β βββ account-center/
β β βββ components/
β β βββ services/
β β βββ types/
β βββ activity/
β β βββ components/
β β βββ lib/
β β βββ services/
β β βββ types/
β βββ auth/
β β βββ components/
β β βββ hooks/
β β βββ lib/
β β βββ service/
β β βββ types/
β βββ contact-details/
β β βββ components/
β β βββ helpers/
β β βββ service/
β β βββ types/
β βββ contact-us/
β β βββ components/
β β βββ services/
β βββ create-contact/
β β βββ components/
β β βββ helpers/
β β βββ services/
β β βββ types/
β βββ dashboard/
β β βββ components/
β β βββ helper/
β β βββ services/
β β βββ types/
β βββ home/
β β βββ components/
β βββ trash/
β β βββ components/
β β βββ services/
β β βββ types/
β βββ update-contact/
β βββ components/
β βββ services/
β βββ types/
βββ hooks/
βββ lib/
β βββ validation/
βββ providers/
βββ stores/
βββ types/
This is a personal portfolio project created to showcase technical skills and coding abilities. While direct contributions are not accepted, feedback and suggestions are always welcome!
- Found a bug or issue? Please report it in the Issues section
- Have suggestions for improvements? I'd love to hear your thoughts
- Code review feedback is appreciated for learning purposes
- Interested in discussing the technical implementation? Feel free to reach out
- Questions about design decisions or architecture choices are welcome
- Open to networking and professional discussions about the project
- Feel free to study the code structure and implementation patterns
- Use this project as a learning reference for similar applications
- Educational discussions about the codebase are encouraged
If you're interested in discussing this project, potential collaborations, or have professional inquiries:
- Open an issue for technical discussions
- Contact directly for professional inquiries
- Connect for networking and knowledge sharing
Note: This project represents original work created entirely by the author for portfolio and learning purposes.
This project is licensed under the MIT License - see the LICENSE file for details.
If you encounter any problems or have questions, please:
- Check the Issues page
- Create a new issue if your problem isn't already reported
- Contact the development team
- Inspired by Google Contacts
- Built with modern web technologies
- Community-driven development
Developed with β€οΈ by Abdullah Bin Omar Chowdhury
Designed for scalability, security, and real-world backend excellence.