A secure authentication system using cued click points instead of traditional text-based passwords.
- User registration and login using graphical passwords
- Sequential image presentation for authentication
- Tolerance zones around click points
- Visual feedback during authentication
- Secure storage of authentication data
The project is divided into two main parts:
src/
├── components/ # Reusable UI components
│ ├── Auth/ # Authentication-related components
│ └── ui/ # Generic UI components
├── context/ # React context for state management
├── pages/ # Page components
├── types/ # TypeScript type definitions
└── utils/ # Utility functions
backend/
├── config/ # Configuration files
├── controllers/ # Route controllers
├── database/ # Database schema and migrations
├── middleware/ # Express middleware
├── routes/ # API routes
└── utils/ # Utility functions
- Clone the repository
- Navigate to the project root
- Install dependencies:
npm install
- Start the development server:
npm run dev
- Open http://localhost:8080 in your browser
- Navigate to the backend directory:
cd backend
- Install dependencies:
npm install
- Create a
.env
file based on.env.example
:cp .env.example .env
- Edit the
.env
file with your database credentials - Set up the database:
- Create a PostgreSQL database
- Run the SQL scripts in
database/schema.sql
- Start the server:
npm run dev
- User enters email and username
- User selects click points on a sequence of images
- The coordinates and image IDs are stored securely
- User enters email
- User is presented with the same sequence of images
- User must click close to the original points (within a tolerance zone)
- If all points match, the user is authenticated
- Click points are stored with reference to image IDs
- Tolerance zones allow for slight inaccuracies in clicking
- Backend validates coordinates with appropriate tolerance
- HTTP-only cookies for JWT storage
- No sensitive information transmitted in responses
-
Frontend:
- React
- TypeScript
- Tailwind CSS
- Framer Motion for animations
-
Backend:
- Node.js
- Express
- PostgreSQL
- JSON Web Tokens (JWT) for authentication