Welcome to the Frontend Mid-level Challenge! This repository contains a challenge designed to test your skills as a frontend developer. The challenge involves creating a friend system where users can manage friend requests, view their friend list, and receive notifications, all while adhering to best practices in software development.
The goal of this challenge is to evaluate your ability to work as a frontend developer by developing a friend system where users can send friend requests, accept or decline invitations, and view their friend list.
-
Registration and Authentication
- Users should be able to create an account and log in.
- Use authentication via JWT or OAuth2 (mocked).
-
Friend Management
- Send friend requests.
- Accept or decline a request.
- List a user's friends.
- Remove a friend from the list.
-
Notifications and Feedback
- The user should be notified when receiving a friend request.
- Show status (pending, accepted, declined).
- Frontend: Use the frontend framework of your choice. We recommend React (Next.js), but any modern frontend framework is acceptable.
- Use mock or fake APIs to simulate backend interactions.
- Automated tests (unit and/or integration).
- Docker to facilitate execution.
- Use of TypeScript.
- Implementation of real-time notifications.
The code will be evaluated based on the following criteria:
✅ Organization and Architecture (best practices, clean code, documentation).
✅ Performance and Scalability (efficient code, optimizations).
✅ Security (protection against common attacks like XSS, CSRF).
✅ Tests (test coverage and use of best practices).
✅ User Experience (intuitive and responsive interface).
- Fork the project repository and submit a Pull Request once the implementation is completed.
- Document the setup in the README.md file (how to run the project locally with Docker, API endpoints, fake credentials, etc.).
- Ensure that your application runs locally with Docker, and provide instructions on how to do so in the README.
The challenge should be completed within 3 days.
❗IMPORTANT
If you are unable to complete the challenge within the estimated time, please submit your progress. The evaluation will be based on the criteria mentioned above.
Good luck! 🚀