Welcome to the Fullstack Senior Challenge! This repository contains a challenge designed to test your skills as a full stack developer. The challenge involves creating a comprehensive 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 full stack 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.
-
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).
- Backend: Use the technology that is most convenient or familiar to you. However, we encourage you to use NestJS.
- Frontend: Similarly, use the frontend framework of your choice. We recommend React (Next.js), but any modern frontend framework is acceptable.
- Database: We recommend using PostgreSQL, but you may choose any database that suits your needs.
- Use of Redis for caching is encouraged.
- Communication between frontend and backend via REST API or GraphQL (we encourage you to use GraphQL).
- Automated tests (unit and/or integration).
- Docker to facilitate execution.
- Use of TypeScript.
- Implementation of caching with Redis.
- Implementation of real-time notifications.
- Structured logs and observability.
- CI/CD pipeline that runs tests automatically (GitHub Actions).
The code will be evaluated based on the following criteria:
β
Organization and Architecture (best practices, clean code, documentation).
β
Performance and Scalability (efficient queries, caching, optimizations).
β
Security (protection against common attacks like SQL Injection, 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 5 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! π