👋🏽 Hello there! Congratulations on being shortlisted for an internship opportunity at NxtJob. This document outlines your task, which should be ideally submitted within 5 days.
To advance in this opportunity, complete the following tasks and submit a PR (Pull Request) to this repository.
Your task is to build a community app where users can post content, receive real-time updates, react to posts, and comment on each other's posts.
Firstly, clone this repository or download it as a zip file. Inside the repository, you'll find a folder named intern_challenge
. Make a copy of this folder and rename it to your full name, using snake_case for spaces (for instance, john_doe). Inside this folder, you will find two 'answers.txt'
files located in the 'technical'
and 'non_technical'
subfolders. Edit these files with your responses.
- Attach a prisma.schema or schema.ts (Drizzle) file from one of your past projects where you have used Prisma or Drizzle ORM.
- Explain, in your own words, the difference between "Edge Serverless" and "Serverless".
- Describe when and where you usually encounter bugs in your development process.
- Discuss the importance of maintaining clean and readable code. What best practices do you follow to structure and write code for ease of reading?
- How do you stay updated on software development topics and remain active in the community? (Forums/Discord/Slack/Meetups/Twitter/Blogs)
- What are your most-used IDE and keyboard shortcuts when coding?
- How do you approach the design and implementation of a scalable backend system? Feel free to attach code snippets for better explanation.
- How do you ensure that your frontend code is functional and reliable? What are your favorite testing methods and tools?
Build a Community App where users can post content, receive real-time updates, react to posts, and comment on each other's posts.
- Initialize your project in the coding_tasks folder. Set up your Next.js frontend and serverless backend. Your code will reside in
your_full_name/coding_tasks
folder. - Design your database schema with Drizzle ORM and set up your database on PlanetScale.
- Implement the features listed below, ensuring to follow best practices for security and performance.
- Commit your code regularly with clear, and descriptive commit messages :)
Frontend: Next.js with RadixUi, Tailwind CSS, Redux for state management ,Typescript and Framer Motion for animations
Backend: Prisma/Drizzle ORM for data management, Cloudflare Workers for serverless functions, Cloudfare D1 for database
Ui Design: https://www.figma.com/file/q1vCqagtHMdJerogbcj0b7/Nxtjob-Summer-Intern-Task
- Real Time Updates: Implement WebSocket to enable users to receive real-time updates without needing to refresh the page.
- Commenting System: Enable users to comment on posts.
- Notifications: Provide users with notifications for various events.
- Design Implementation: Evaluate how closely the provided Figma design is followed in the application's user interface.
- Project Structure: How you structure files, folders, and modules of the code.
- Code Quailty: Examine the clarity, readability, and documentation of the code, as well as the logic's coherence and adherence to best practices.