
Learn to build and deploy a full-stack social media app with Next.js, Tailwind CSS, TypeScript, and MongoDB, featuring user authentication, posting tweets, and groups.
Official Course Setup Lecture
Explore the final deployed version of Twiddle, a Next.js full‑stack social app, featuring landing and onboarding, Clark authentication, profiles, posting, liking, replying, retweeting, sharing, search, groups, and notifications.
Initialize a git repository on GitHub for the twiddle course and link it to a local folder via VS Code. Commit the first commit, rename master to main, and push.
Understand a design document as a detailed plan that outlines architecture, components, and interactions before development, serving as a blueprint to align goals, reduce costs, and save time.
Explore Twiddle's design document, detailing a microservices architecture with authentication, user and tweet services, and schemas for users, tweets, and groups, plus a responsive UI.
Develop a UI design for twiddle using Figma by creating a design assets folder, downloading resources, and practicing git workflows, to visualize the app and preempt issues before coding.
Create a Figma landing page wireframe for the Twiddle App, featuring a black background, logo, Happening now title, join today, and login and register buttons.
Design the onboarding page for the twiddle app, including a welcome heading, a bio text area, a save button, and a profile illustration from Clark UI.
Design the home page for the Twiddle app, featuring a black desktop frame with a top bar, sidebars, group and user cards, and a tweet feed with interactive icons.
Design the search page user interface by duplicating a page, adding a rounded search bar with an icon, and listing users and groups that filter as you type.
Design the tweet page UI for the Twiddle App in a Next.js full-stack context, including a text area and a prominent post button to enable creating and posting tweets.
Design the profile page with a profile photo, name, username, bio, edit profile, and two tabs for tweets and replies, plus share and duplicate design features.
Set up a Next.js 14 project in Visual Studio Code, install TypeScript, Tailwind CSS with the app router, and add tailwind CSS animate for animations.
Leverage Next.js route groups to organize the app into oath and route folders, move layout and page files to the root, and prepare authentication routes for scalable, maintainable code.
Create register and login routes under the auth folder and implement a shared layout with metadata and styling. Wrap the app in a Clerk provider to enable authentication context.
Create a dynamic Next.js register route using a [..] folder that renders Clark's sign up user interface, and configure the publishable key in .env.local with the Clark middleware.
Define the onboarding page by creating an onboarding folder in auth, adding page.tsx as a functional component returning an h1 onboarding, and applying tailwind styles for white in the config.
Create a landing page as a reusable UI component and render it if no user is logged in. Use Clerk currentUser with Next.js to drive sign in and sign up.
Create the root layout for a Next.js app, conditionally rendering top and side bars by login status and styling the main container with a responsive Tailwind flex layout.
Change the app favicon to a branded logo by converting an SVG to a favicon, creating a transparent background with Canva, converting PNG to favicon, and updating the Next.js project.
Create and style the left sidebar for the Twiddle app using reusable components, client-side Next.js code, and active link logic driven by path names and the user ID.
Create a bottom bar component for mobile navigation, hidden on larger devices, while the left sidebar stays visible on larger devices; implement as a client component with shared links.
Create a fixed top bar for the Next.js twiddle app, featuring the home logo and Clark’s signed-in organization switcher and user button.
Set up the database backend for the Twiddle app by creating lib/mongoose.ts to manage a mongoose connection, enforce strict queries, and handle missing MongoDB URL errors via an Atlas URL.
Create a server-side user model in a Next.js app with mongoose to store onboarding users, including id, email, username, name, image, bio, tweets, onboarded status, syncing with Clark's back end.
Create your first Next.js user action to save a new user's details to the database using a server component, the user model, and a create user function.
Sync your twiddle app with clerk using webhooks by deploying to vercel, exposing the app publicly, and configuring an endpoint to handle user created and updated events.
Fetch the current user from Clark and the database during onboarding, then render the user profile and account info with a welcome message to complete your profile to use Twitter.
Create the update user function in user actions to update user info via an update user params interface, syncing changes with Clark and the database. Integrate with clerk webhook to trigger updates on user.updated and revalidate the profile edit page.
Build the account info component as a user form with shared CDN UI, validate inputs using Zod schemas and a form resolver, then save bio data to the backend.
Define the account info component's async onsubmit to update the user with bio, use path name from next/navigation, and handle profile edit and onboarding redirections, with a one-second loading delay.
Build the right sidebar for twiddle, showing suggestions, groups, and users by fetching data with an asynchronous component and a fetch users action, including regex search and pagination.
Continue building the right sidebar by conditionally rendering similar minds; show no users yet when empty, fetch four users, and map them to user cards.
Create a client component user card that renders an avatar, name, and username from props, with a view button navigating to the user's profile for that id using the router.
Build and Deploy a Complete Social Media App using Next.js – Twiddle App
Welcome to the ultimate hands-on course where you'll learn how to build, design, and deploy a full-featured social media app, Twiddle, from scratch! Whether you’re looking to sharpen your web development skills or build your portfolio, this course will guide you through the entire process of creating a modern, scalable app similar to platforms like Twitter.
What You’ll Learn:
- Full-stack development using Next.js, React., and more.
- Authentication: Secure user login and registration.
- Database Management: Store and manage user data and tweets.
- Tweet Features: Liking, retweeting, replying, and creating tweets.
- Group Management: Create and manage social groups.
- Responsive Design: Ensure your app looks great on all devices.
- UI Design: Learn how to use Figma to create beautiful user interfaces.
You'll not only write clean, reusable code but also implement advanced features like notifications, tweeting, commenting on tweets, pagination, and a search functionality. Each section dives deep into practical aspects, from setting up the project to deploying it live!
Why Enroll?
This course isn’t just about building another app. It's about understanding the key principles of modern web development while working on a project that you can showcase to potential employers or clients. By the end, you’ll have a deployable, feature-rich social media app, and the skills to build more ambitious projects on your own.
Hands-On, Real-World Experience
Unlike theory-heavy courses, this course focuses on real-world development. You’ll tackle every stage of building a fully functioning social platform, from integrating secure authentication to handling complex data relationships in the backend. Each feature you create—like tweets, groups, and user profiles—is built with scalability and performance in mind, preparing you to tackle real-world challenges as a full-stack developer.
Launch Your Own App and Portfolio
By the end of this course, you won't just have a demo project—you’ll have a fully deployable app that you can launch on the web and showcase to clients, recruiters, or employers. Whether you want to start your own project or level up your career, building Twiddle will arm you with essential skills, industry knowledge, and a standout portfolio piece that demonstrates your abilities.
Join now and start building your own web development project!
About the Instructor Noor Fakhry:
Meet Noor Fakhry, an experienced software engineer with many years of hands-on experience working in the field. Noor is the founder and lead instructor at Programming Fluency, where he shares his expertise with aspiring programmers. With a strong background in software development, Noor brings practical knowledge and real-world insights to his teaching. He has worked on various projects and tackled complex challenges, gaining valuable experience that he now imparts to his students.
Noor's extensive experience as a software engineer enhances his ability to provide practical guidance and industry-relevant knowledge. He is currently pursuing a Master's degree in Computer Science, further deepening his understanding of the field. With a passion for both self-learning and formal education, Noor recognizes the specific needs of beginner coders and is committed to creating comprehensive and engaging programming and tech courses. His unique approach not only makes learning to code fun and interactive but also equips students with the skills they need to thrive in the tech industry. Noor goes beyond teaching coding concepts, he also emphasizes the reasoning behind certain practices, fostering a deeper understanding of the subject matter.
Being a self-taught programmer, Noor recognizes the abundance of online courses, tutorials, and books that tend to be excessively wordy and insufficient in imparting essential skills. Many individuals find themselves overwhelmed and uncertain about where to begin when learning programming and how to code. Furthermore, a considerable number of people lack the financial means to invest $20,000 in a coding bootcamp. The accessibility of programming skills should be inclusive and affordable for everyone. Educational materials ought to focus on imparting practical, up-to-date skills, ensuring they do not waste a student's precious time.
To enhance the learning experience, Noor employs animations, real-life examples, and whiteboard amazing explanations allowing students to visualize and comprehend complex concepts easily.
Noor's journey led him to discover his true passion in teaching programming and coding, where he finds joy in helping individuals achieve their aspirations and turn their dreams into reality. This very passion drove him to become a full-time online course creator at Programming Fluency.
JOIN Noor on a transformative journey towards programming fluency and a successful career in tech today!
Are you ready to become FLUENT in your favorite programming language?
About Programming Fluency:
Welcome to Programming Fluency
I have designed Programming Fluency to be the number one destination for people looking to learn how to code, master programming, and acquire high-demand job market skills. This is the only platform that provides the best and highest quality tech courses in the entire world. Together, we are creating a new landscape within the online education space. I am honored to have you with us!
- Noor Fakhry, Founder of Programming Fluency
Programming Fluency is your gateway to mastering in-demand skills, landing a high-paying job, and advancing your career in technology.
We offer the resources and supportive environment you need to take control of your professional journey and unlock a wealth of exciting career opportunities in the tech industry, regardless of your background or experience.
At Programming Fluency, we help you become fluent in your favorite programming language, ensuring you have the expertise and confidence to excel in your chosen field.
We create comprehensive masterclasses that will take you from an absolute beginner to a complete professional. Additionally, we offer practical courses such as building and deploying full-stack apps, designed to boost your portfolio and make you stand out in the job market. If you already have some experience and want to further enhance your portfolio, our advanced courses are perfect for taking your skills to the next level.