-
Notifications
You must be signed in to change notification settings - Fork 0
/
Coding Challenge
86 lines (63 loc) · 3.17 KB
/
Coding Challenge
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
**Coding Challenge**
**Assignment**
- Create a web app called **Quoted**.
The features of **Quoted** include:
- **Authentication**:
- Users can sign up and login.
- Requirements:
- Check if email is unique
- Create an account - after Firebase Auth has been verified
- Create a profile in Firestore
- Retrieve user data and store it in AuthContext
- handle any errors that might occur
- on app start, check if user is logged in
- if the user is logged in, render home screen with infinite scroll of Quotes
- Would be nice: inProgress spinner while Auth is occurring
- Users should be logged in to use the features of the app.
- **Authorization**:
- Users can edit and delete the quotes only if they are the author of the same
- **Home Page**:
- List of all the quotes / posts ever written on the app are shown in descending order of their timestamp with the most recent one on top.
- **Profile Page**:
- Users can edit their basic information
- Basic information: First name, last name, display name, email, password
- Profile picture: users can upload a profile picture
- **Quotes / Posts**:
- Users can upload quotes to the app for everyone to see. Each entry should contain the following entities:
- The quote
- Name of the author
- Profile pic of the author or a placeholder if no profile pic uploaded
- timestamp of when the quote was created
- **(Optional)
Bonus:** Users can like quotes and quotes should display the number of likes received.
**Notes:**
******************Firestore**************************
- The app should have Firebase’s **Firestore** integrated. All the users and quotes should be stored in Firebase Firestore database. Use all the CRUD operations provided by Firestore for implementing the features.
- Here’s a good [Firestore starting point](https://firebase.google.com/docs/firestore/quickstart?hl=en&authuser=0)
******************Storage*****************************
- For uploading profile pictures you can use firebase’s
- Here’s a good [Firebase storage starting point](https://firebase.google.com/docs/storage?authuser=0&hl=en)
******************Frontend Framework******************
- Next.js
- Here's a good [Next.js starting point](https://nextjs.org/learn/basics/create-nextjs-app).
Use a **mobile-first approach** for this challenge. Make the app desktop-responsive only if time allows, **but it is mandatory for the app to be mobile-responsive**.
This exercise is designed to give you unlimited creative freedom as you develop a solution /
implementation. Feel free to use any packages/tools as you see fit; the goal is a functional mobile-responsive app
with a reasonable amount of CSS stylings and efficient use of Firestore.
*********************Time Duration:*******************
The challenge is designed in a way that it should take 15 - 18 hours for a candidate to complete it. But we expect you to complete the challenge within 7-10 days from now, ideally.
## My Notes
### Models
**User**
- id: String
- firstName: String
- lastName: String
- email: String
- profileImage: String
- posts: Post[]
**Post / Quote**
- id: String
- userId: String
- content: String
- createdAt: DateTime
- user: User