AyushiVashisth / kryzen-auth-pdf-form

Welcome to the Kryzen! We're excited to invite you on board. This document outlines the requirements for developing a Node.js and React.js application. The primary features include user authentication, a simple data collection form, and displaying and downloading the collected data in PDF format.

Home Page:https://frontend-ayushivashisth.vercel.app/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

๐ŸŒฟ kryzen-auth-pdf-form Website๐ŸŒฟ

Welcome to the Kryzen! We're excited to invite you on board. This document outlines the requirements for developing a Node.js and React.js application. The primary features include user authentication, a simple data collection form, and displaying and downloading the collected data in PDF format. Based on this project we will evaluate your skills like cleanliness of code. Breaking problems down into small steps. UI and UX are not important, goal is to understand your analytical thinking and problem-solving Assignment_0-1 (8).pdf

Frontend Deployed URL ๐Ÿ‘‰ Click here

Backend Respositry URL ๐Ÿ‘‰ Click here


Technologies Used

Frontend
react tailwindcss

Backend
express mongoose

Tools
github npm vscode

Deployment
vercel netlify

Features

  1. User Registration:

    • Allow users to register a new account with a unique username and password.
    • Ensure that the registration process securely stores user credentials.
  2. User Login:

    • Implement a secure login mechanism where users can authenticate with their registered credentials.
    • Utilize JSON Web Tokens (JWT) for secure authentication.
  3. Access Control:

    • Define specific pages or routes that should only be accessible when the user is authenticated.
    • Implement middleware on the server to check the validity of JWT tokens before granting access.

Implementation Steps:

  1. Backend Setup:

    • Create user schema in MongoDB to store user data, including username and hashed password.
    • Set up routes for user registration and login using Express.
  2. User Registration:

    • Implement a registration form on the frontend using React.
    • Validate and sanitize user input on the client and server sides.
    • Hash the user's password before storing it in the database.
  3. User Login:

    • Develop a login form on the frontend.
    • Validate user input and authenticate the user by comparing the hashed password.
    • Generate a JWT upon successful login and send it to the client.
  4. Access Control:

    • Create a middleware function on the server to verify the JWT in incoming requests.
    • Use the middleware to protect routes that require authentication.

Considerations:

  • Token Expiry: Set a reasonable expiry time for JWT tokens to enhance security.

  • Password Policy: Enforce strong password policies during registration.

  • Secure Transmission: Ensure that user credentials and JWTs are transmitted securely over HTTPS.

  • Error Handling: Implement error handling for various scenarios (e.g., incorrect password, user not found).

By successfully implementing the User Authentication feature, you establish a foundation for securing user data and controlling access to different application parts.

Getting Started

  1. Clone the repository to your local machine.
  2. Set up the backend API using Express and Mongoose (provide instructions if necessary).
  3. Navigate to the project directory.
  4. Run npm install to install the required dependencies.
  5. Run npm start to start the development server.

This is an individual project that I developed as a solo full-stack web developer within 5 days.

Contribution Guidelines

We welcome contributions to the kryzen-auth-pdf-form project. If you have ideas for new features or find any bugs, please open an issue in the repository. Pull requests are also encouraged.

Show Your Support

If you find this project interesting or valuable, please consider giving it a โญ๏ธ.

๐Ÿš˜ Happy Exploring! ๐Ÿš˜

About

Welcome to the Kryzen! We're excited to invite you on board. This document outlines the requirements for developing a Node.js and React.js application. The primary features include user authentication, a simple data collection form, and displaying and downloading the collected data in PDF format.

https://frontend-ayushivashisth.vercel.app/


Languages

Language:JavaScript 90.7%Language:HTML 5.9%Language:CSS 3.4%