· Report a bug · Request a feature ·
The project aims to develop a web application that provides a flexible authentication system for users. The application allows users to sign up and log in using two different authentication methods
- User-friendly registration and login interfaces for email/password authentication.
- Secure password hashing and encryption to protect user credentials.
- Account creation with verification emails to ensure valid email addresses.
- Seamless integration with Web3 wallets (e.g., MetaMask, Trust Wallet) for user login.
- Secure communication with the Ethereum network to verify wallet ownership.
- Ability for users to log in with a single click from their Ethereum wallets.
- Implementation of a JSON Web Token (JWT) system to manage user sessions.
- Issuance of JWT tokens upon successful authentication for secure session handling.
- Token expiration and refreshing to maintain session security.
- Utilization of robust encryption techniques to securely store user credentials.
- Safe handling and storage of Web3 authentication-related data to protect user privacy.
- Easy switching between email/password and Web3 authentication methods.
- Users can choose their preferred authentication method and switch as needed.
- Creation of an interactive and personalized user dashboard.
- Display user-specific information, such as profile details, account settings, and preferences.
- Options for users to manage their account information and update settings.
- Implementation of an email-based account recovery mechanism for email/password authentication.
- Secure password reset functionality through email verification.
- Integration of Google OAuth for additional authentication options.
- Users can choose to log in using their Google accounts for added convenience.
- Ensuring the website is responsive and accessible across various devices and screen sizes.
- Mobile-friendly interface for users on smartphones and tablets.
- Adherence to best practices for data security and user privacy.
- Protection against common security vulnerabilities such as cross-site scripting (XSS) and cross-site request forgery (CSRF).
- Proper error handling and informative messages for users during authentication processes.
- User-friendly feedback to guide users through the registration and login processes.
- Allow users to customize their profiles with avatars, usernames, and other optional details.
- Personalization options for users to enhance their experience on the website.
- Next.js
- Tailwind CSS
- Node.js
- Express.js
- MongoDB
To get a local copy up and running follow these simple steps.
In order to get a copy of the project you will require you to have Node.js (v14+) and the NPM package manager installed. If you don't have it, you can download the latest version of Node.js from the official website which also installs the NPM package manager by default.
Open the terminal in the folder in which you wish to clone the repository and enter the following command:
git clone https://github.com/pranjal6314/LUGANODES.git
cd LUGANODES
Install all the NPM packages:
npm i
In order to run the project in development mode use:
npm run dev
In order to build the project and run it, use:
npm run build
npm start
In order to test our service we first need to build and run docker-compose. Docker-compose will automate the build and the run of our two Dockerfile. To run these commands you must be in the repository’s root.
- Build the Image
docker-compose build
- Start the service
docker-compose up -d
Note that you will have to add your own
.env
file at the root directory and add your own environment variables for the project to build. Following are the environment variables used:
MONGO_URI
- The MongoDB connection stringAUTH_SECRET
- The secret used when creating a sessionNEXT_PUBLIC_HOST
- The domain name (usually http://localhost:3000)GOOGLE_CLIENT_ID
andGOOGLE_CLIENT_SECRET
- The Google OAuth Client ID and Client secret obtained from the Google Cloud Console
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project. (Refer the get started instructions)
- Create your 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.
###Screenshot🖼️
Again visit the profile - the password section disappear because the password was already put in, now only we can update the password
Now we can log in with the same email and password and the Metamask address is also connected to this account
Distributed under the MIT License. See LICENSE
for more information.