An Open Source Project made by the Gentleman Programming Community.
If you want to contribute to this repository, simply follow our contributing guidelines and you will be good to go.
Clone the project
git clone https://github.com/adonyssantos/gentleman-community-twitter-clone twitter-clone
Go to the project directory
cd twitter-clone
Install dependencies
yarn
Create the .env
file (Use the .env.example
as a reference):
cp .env.example .env
yarn web
: Runs the development server for the web application.yarn web:build
: Builds the production-ready bundle for the web application.yarn web:preview
: Opens a preview of the web application in a browser.
yarn mobile
: Runs the development server for the mobile application.yarn mobile:ios
: Runs the iOS version of the mobile application.yarn mobile:android
: Runs the Android version of the mobile application.
yarn format:check
: Checks the codebase for formatting issues without making any changes.yarn format:fix
: Fixes formatting issues in the codebase automatically.yarn lint:check
: Checks the codebase for linting errors without making any changes.yarn lint:fix
: Fixes linting errors in the codebase automatically.
yarn client:test
: Runs tests for the client-side code.yarn server:test
: Runs tests for the server-side code.yarn test
: Runs all tests in the project.
This projects involves the use of several technologies.
- Class Variance Authority
- Expo
- Prisma
- React Native Web
- React Query
- React Universal Tailwind
- Supabase
- tRPC
- TypeScript
- Vite
- Zod
- ESLint
- Jest
- Lerna
- Nx
- Prettier
- Testing Library
- Vitest
The following table shows the project's workspaces.
Name | Path | Description |
---|---|---|
β¨ root |
/ | The project's absolute path |
π mobile |
/apps/mobile | Mobile app |
π web |
/apps/web | Web app |
π¦ @root/client |
/packages/client | Client package |
π¦ @root/server |
/packages/server | Server package |
π¦ @root/shared |
/packages/shared | Shared packages |
π¦ @root/types |
/packages/types | Types packages |
π¦ @root/ui |
/packages/ui | UI package |
The Atomic Design methodology involves the following steps:
- Atoms: Design and define the smallest UI elements, such as buttons, form fields, icons, and typography styles.
- Molecules: Atoms are combined to create more complex components that fulfill specific functions, such as a search bar or navigation menu.
- Organisms: Organisms build larger-scale components by combining molecules and atoms. These organisms represent complete sections of the website, such as a header or footer.
- Templates: Finally, organisms are combined to create complete web page layouts that can be reused across the website. Templates provide a consistent structure and visual coherence.