Skip to content

Commit a467c31

Browse files
committed
initial commit
1 parent e8d7b33 commit a467c31

File tree

17 files changed

+30693
-2
lines changed

17 files changed

+30693
-2
lines changed

.gitignore

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2+
3+
# dependencies
4+
/node_modules
5+
/.pnp
6+
.pnp.js
7+
8+
# testing
9+
/coverage
10+
11+
# production
12+
/build
13+
14+
# misc
15+
.DS_Store
16+
.env.local
17+
.env.development.local
18+
.env.test.local
19+
.env.production.local
20+
.env
21+
22+
npm-debug.log*
23+
yarn-debug.log*
24+
yarn-error.log*

README.md

Lines changed: 169 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,169 @@
1-
# Sign-In-Sign-Up-Form
2-
Sign In/Sign Up Form with Password show-hide toggle button and JavaScript authentication.
1+
2+
3+
# React-Form-Authentication-Validation
4+
5+
A form web app which allows a user to sign up and/or sign in using an email or using popular Federated Identity Providers (Google and Facebook).
6+
Firebase handles the hosting and Identity Access Management (IAM).
7+
8+
<!-- COLLAPSABLE/EXPANDABLE TABLE OF CONTENTS -->
9+
<details>
10+
<summary>Table of Contents</summary>
11+
<ol>
12+
<li>
13+
<a href="#project-overview">Project Overview</a>
14+
<ul>
15+
<li><a href="#technologies-used">Technologies Used</a></li>
16+
<li><a href="#resources">Resources</a></li>
17+
</ul>
18+
</li>
19+
<li>
20+
<a href="#feature-highlights">Features Highlights</a>
21+
<ul>
22+
<li><a href="#optimization">Optimization</a></li>
23+
</ul>
24+
</li>
25+
<li>
26+
<a href="#why-i-started-this-project">Why I started this project</a>
27+
<ul>
28+
<li><a href="#what-i-learnt">What I learnt</a></li>
29+
</ul>
30+
</li>
31+
<li><a href="#folder-structure">Folder Structure</a></li>
32+
<li>
33+
<a href="#getting-started">Getting Started</a>
34+
<ul>
35+
<li><a href="#prerequisites">Prerequisites</a></li>
36+
<li><a href="#setup">Setup</a></li>
37+
</ul>
38+
</li>
39+
<li><a href="#contributing">Contributing</a></li>
40+
<li><a href="#license">License</a></li>
41+
<li><a href="#sponsor">Sponsor</a></li>
42+
<li><a href="#author">Author</a></li>
43+
</ol>
44+
</details>
45+
46+
## **Project Overview**
47+
48+
The goal is to build a user-friendly form making it easier for a user to log in either with a username/password or with their social accounts (such as Facebook or Twitter.
49+
50+
[PREVIEW VIDEO/GIF]
51+
52+
Preview Link: <https://form-auth-val.netlify.app/>
53+
54+
### **Technologies Used** 🛠
55+
56+
- React (UI Framework)
57+
- React-Router (Routing Library)
58+
- Firebase (Database & Hosting)
59+
60+
### **Resources** 🎨
61+
62+
- Google font: <https://fonts.google.com/>
63+
- React-icons: <https://react-icons.github.io/react-icons>
64+
65+
## **Features Highlights**
66+
67+
- [x] Email/Password registration (Sign Up) and login (Sign In)
68+
- [x] Form input validation using Regular expression pattern
69+
- [x] Google and Facebook Provider for user authentication
70+
- [x] React Router for easily navigation
71+
- [x] Role based authorization using Protected routes
72+
73+
### Optimization 🚀
74+
75+
I would like to implement the following features to improve this project
76+
77+
- [] Password Show/Hide Toggle
78+
- [] Password Reset
79+
- [] Retrieve user's profile after the login
80+
81+
## Why I started this project 😇
82+
83+
- Fully developed websites require a form to give complete access to customers or users.
84+
- Some forms use `uncontrolled elements` to handle form data which is old fashioned and bad practice.
85+
- I wanted to experiment with Firebase Identity Providers and Database.
86+
87+
### **What I Learnt** 📖
88+
89+
This personal project took a lot of research. I was able to understand
90+
91+
- React `useContext`, how to optimize and manage state in React using `ContextAPI`.
92+
- Confirmation of password between 6 to 14 characters which must contain atleast least one lowercase letter, one uppercase letter, one numeric digit, and one special character.
93+
- Authentication and authorization through either Google or Facebook and email adddress.
94+
95+
## **Folder Structure** 📁
96+
97+
```bash
98+
├── public
99+
│ ├── index.html
100+
├── src
101+
│ ├── authentication
102+
│ │ ├── firebase
103+
│ │ │
104+
│ ├── components
105+
│ │ ├── Alert.jsx
106+
│ │ ├── SignIn.jsx
107+
│ │ ├── SignUp.jsx
108+
| | |
109+
│ ├── context
110+
│ │ ├── AuthContext.js
111+
| | |
112+
│ ├── protectedroute
113+
│ │ ├── ForgotPassword.jsx
114+
│ │ ├── ProtectedRoute.jsx
115+
│ │ ├── UserProfile.jsx
116+
| | |
117+
│ ├── validation
118+
│ │ ├── FormValidation.js
119+
| | |
120+
│ ├── App.js
121+
│ ├── index.css
122+
│ ├── index.js
123+
├── .gitignore
124+
├── package-lock.json
125+
└── package.json
126+
```
127+
128+
## **Getting Started** 💻
129+
130+
This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
131+
132+
### **Prerequisites**
133+
134+
Make sure you have [Node.js](https://nodejs.org/) and [NPM](https://www.npmjs.com/) installed.
135+
136+
- Node.js (>= 17.4.0)
137+
- NPM (>= 8.4.0)
138+
139+
### **Setup** 👨‍💻
140+
141+
> Usage: How to run this web app locally
142+
143+
1. Install dependencies
144+
```npm install```
145+
146+
2. Run the development server
147+
```npm run dev```
148+
149+
3. Navigate to `http://localhost:3000` in your browser to view the web app.
150+
151+
## **Contributing** 🤝🏾
152+
153+
Did you find bug(s) or want to request new feture(s)? Please visit the [Contributors guidelines](/CONTRIBUTING.md) to learn how to submit an issue or pull request.
154+
155+
## **License** 🔐
156+
157+
This project is built under the [MIT License](./MIT-License).
158+
159+
## **Sponsor**
160+
161+
If you like this project, kindly star ⭐ and/or consider buying me coffee(s). Every donation is appreciated.
162+
163+
<a href="https://www.buymeacoffee.com/frankiefab100">
164+
<img width="150px" alt="bmc-button" src="https://user-images.githubusercontent.com/62628408/127788747-8850d386-fc61-4fff-b18f-8c5ee597be34.png">
165+
</a>
166+
167+
## **Author**
168+
169+
Franklin Ohaegbulam - [@frankiefab100](https://twitter.com/frankiefab100)

0 commit comments

Comments
 (0)