A Twitter clone with Remix and Kontenbase. Styled with Chakra UI. Just a demo, not meant to be 100% complete.
- Landing page
- Authentication/Authorization
- Sign up
- Sign in
- Sign out
- Permission of ownership aka authorization
- Home with timeline of Wreets (Tweets)
- Link to go to Wreet page
- View Wreet content page
- View user profile
- Create a new Wreet
- Delete owned Wreet
- Follow other users
- Filtered Wreet timeline
- Comment or making a thread in a Wreet
- Like a Wreet
- ReWreet (retweet)
- Bookmark
- Copy link to Wreet
- React + Remix + React Router
- HTML
- CSS
- JavaScript
- TypeScript
- Styling options:
- Chakra UI
- Stitches + Radix UI + Radix Colors
- Deployment options:
- Vercel
- Extras:
- Prettier
- ESLint
- Cloudflare DNS
Here are the step by step guide to develop this app. You can also watch the video on YouTube
- Sign in and setup a new Kontenbase Project
- Know to get API Key from the Settings
- Know to get API URL
- Create a new private
wreetsservice and customize it to have:contentcreatedAtcreatedBy
- Customize
usersservice to have:handlecreatedAtcreatedBy
- Test to sign up or register new User
- Test to sign in or login to User
- Test to create new Wreet
- Test to get all Wreet
- Test to get one Wreet by ID
- Test to delete a Wreet
- Check Kontenbase Docs
- Welcome
- Getting Started
- SDK
- Generate React+Remix app with
create-remixnpx create-remix@latest
- Create a GitHub repo and push the repo
- Setup
.env.env.exampleand Git ignore.env.DS_Store - Setup
package.json- name
- description
- license
- scripts
- Make sure to install dependencies with
npm install - Start development server with
npm run dev - Open up http://localhost:3000
- Install app dependencies
npm install dotenv dayjs invariant remix-auth remix-auth-form @kontenbase/sdk framer-motion @chakra-ui/react @chakra-ui/icons @emotion/react @emotion/styled
- Install development dependencies
npm install -D @types/invariant @typescript-eslint/eslint-plugin @typescript-eslint/parser prettier eslint eslint-config-airbnb eslint-config-prettier eslint-plugin-import" eslint-plugin-jsx-a11y eslint-plugin-react eslint-plugin-react-hooks eslint-plugin-unused-imports
- Setup ESLint and Prettier config
- Copy favicons assets and manifest
- Know that
apifolder only for@remix-run/vercel - Setup
chakra-ui.tsconfig file - Setup
types - Setup
components - Setup
features - Setup
libdayjskontenbase
- Setup
utils - Setup
servicessession.server: Cookie session storage with Remix Serverauth.server: Authenticator fromremix-authandFormStrategyfromremix-auth-form- Implement
signinandsignupwith combination of Kontenbase SDK and manual HTTP request (due to the SDK cannot handle server-side call and custom request body).
- Setup Remix
root. - Make sure of Remix
entryclient and server. - Setup
routesindexaboutsignupsigninsignouthome: Timeline of all Wreets- Currently not filtered by following users
wreet: New Wreet composer$userHandle: user profile$userHandle/$wreetId- Single Wreet page
- Delete an owned Wreet
profile: Redirect to authenticated user profile
After having run the create-remix command and selected "Vercel" as a deployment target, you only need to import your Git repository into Vercel, and it will be deployed.
It is generally recommended to use a Git repository, because future commits will then automatically be deployed by Vercel, through its Git Integration.
If you'd like to avoid using a Git repository, you can also deploy the directory by running Vercel CLI:
npm i -g vercel
vercel