A Reddit clone built from scratch using React, Firebase, Next.js, Chakra UI, and TypeScript. The application features both front and back end development, including user authentication, Firestore database, cloud functions, security rules, Transactions, deployment, and more.
Created using a YouTube video tutorial from freeCodeCamp.org.
The app was built using Next.js, React.js, Firebase, Chakra UI, TypeScript, and Recoil. Setup for these frameworks is required for the functionality of the app.
This is a Next.js project bootstrapped with create-next-app. To get started, run the development server:
npm run dev
# or
yarn dev
# or
pnpm devOpen http://localhost:3000 with your browser to see the result.
You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.
This project uses next/font to automatically optimize and load Inter, a custom Google Font.
To learn more about Next.js, take a look at the following resources:
- Next.js Documentation - learn about Next.js features and API.
- Learn Next.js - an interactive Next.js tutorial.
- Next.js 13
- Next.js Layouts
You can check out the Next.js GitHub repository - your feedback and contributions are welcome!
The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.
Check out our Next.js deployment documentation for more details.
The following npm installations are required to run this project.
- Chakra Setup:
npm i @chakra-ui/react @chakra-ui/next-js @emotion/react @emotion/styled framer-motion - Fonts and icons:
npm i @fontsource/open-sans @chakra-ui/icons react-icons - Firebase:
npm i firebase react-firebase-hooks - Recoil:
npm i recoil - Extras:
npm i moment safe-json-stringify
Chakra UI was used for designing the UI of the project. The documentation for Chakra components used in this project are found below:
Recoil was used for global state management. Read the documentation below:
Firebase was used for user authentication, with the aid of react-firebase-hooks.
Module not found: Can't resolve 'encoding' in '@\node_modules\node-fetch\lib'
Solution: npm install encoding
npm i safe-json-stringify