- Auth (using firebase auth)
- signing in using emails/password or google
- registering using emails/password or google
- Profile
- profile avatar via upload
- first/last name
- education
- skills
- position via leaflet map (location picker/current location)
- emails
- phone numbers
- social links
- cv via upload
- extracting emails, social links or phone number via parsing the cv
- populate the profile editing form with any extracted data from the cv
- Weather (using openweathermap)
- getting weather forecast based on the position provided in the user profile
- Validation (using zod)
- api validation
- form validation
- State management (redux toolkit)
- Routing (using react router dom)
- Styling and Responsiveness (using tailwind css)
- Backend API (using expressJS)
- Database (using firebase firestore)
- API Documentation (using swagger)
- implementing location picker
- wasted time implementing un-reliable forcast retrieval using country and city (openweathermap data mismatch)
- spitting the editing form into multiple components without passing callbacks (solved using react form hook)