An open API service indexing awesome lists of open source software.

https://github.com/daveanthonyc/x-clone

🐦 X/Twitter Clone in TypeScript React
https://github.com/daveanthonyc/x-clone

authentication component-testing firebase firebaseaut react typescript vitest

Last synced: about 2 months ago
JSON representation

🐦 X/Twitter Clone in TypeScript React

Awesome Lists containing this project

README

        




X Logo

X Clone


Rich feature React TypeScript clone of X

- This is a clone of X/Twitter's main application in React/TypeScript. It is just the front end client code and makes use of the database/authentication toolset from Firebase for simplicity of development.
- My focus with this project is to learn a myriad of practical app development, React and testing skills and I will attempt to build it without a tutorial and just seek out documentation for tools being used and also web dev concepts. Any useful findings will be added to this readme document. I can potentially post about my learnings in my blog as well.

# Feature Goals
- Posting
- User interaction (likes, replies, shares, views)
- User Authentication / (maybe use O Auth as well?)
- File uploading / Video sharing
- Paid Premium Subscription (Stripe Integration)
- Account Search
- Infinite Scroll

# Key Learning Goals
- Create reusable components with different variants like in a design system
- Test by conveniently viewing all states of components (Storybook)
- How to handle Global State Management and flow when involving async fetch requests (e.g Auth using Redux/Context)
- Understand Patterns to integrate payment services (Stripe)
- Vitest component testing (experiment with TDD) and mocking services
- Implementation of MVP architecture. (explore use of Custom Hooks/Context Providers for encapsulation of presenter logic?)
- Create testable modules with dependency injection

# Installation
*Clone the Repository*
```bash
git clone [email protected]:daveanthonyc/X-Clone.git
```

*Install dependencies*
```bash
npm install
```

*Run development server*
```bash
npm run dev
```