A full stack clone of Meta Threads. It have some mixed functionality like comment from instagram, grid images from twitter
- Node
- React Native
- FFMpeg(if not it's fine it will be installed with npm)
- Xcode
Make sure you have Node.js and npm installed on your machine. If not, you can download and install them from here.
-
Clone the repository:
git clone https://github.com/GohilMahendra/Thread-Rest.git cd Thread-Rest
-
Install libraries
yarn
-
Install pods
cd ios pod install
- install libraries
yarn
- setup ENV file
- MONGO_URL = your-db-uri
- MAILER_PASS = your-mailer-password
- MAILER_EMAIL = your-mailer-mail
- AWS_ACCESS_KEY = aws-access-key-for-storage-access
- AWS_SECRET_ACCESS_KEY = aws-secret-key-for-storage-access
- AWS_S3_BUCKET_NAME = aws-bucket-name
- AWS_REGION = aws-region-name
- TOKEN_SECRET = token-secret-for-sign-jwt
- use this command to run on nodemoon
yarn dev
- UserSearch (username,fullname) User Schema
"mappings": { "dynamic": false, "fields": { "fullname": [ { "type": "stringFacet" }, { "type": "string" }, { "foldDiacritics": false, "maxGrams": 7, "minGrams": 3, "tokenization": "edgeGram", "type": "autocomplete" } ], "username": [ { "type": "stringFacet" }, { "type": "string" }, { "foldDiacritics": false, "maxGrams": 7, "minGrams": 2, "tokenization": "edgeGram", "type": "autocomplete" } ] } }
}
- ContentSeach (post content full text search) Post Schema
"mappings": { "dynamic": false, "fields": { "content": [ { "type": "stringFacet" }, { "type": "string" }, { "foldDiacritics": false, "maxGrams": 7, "minGrams": 2, "tokenization": "edgeGram", "type": "autocomplete" } ] } }
}
- React-Native
- Typescript
- Redux-Toolkit
- React-navigation v6
- reanimated v2
- Socket.io client
- MongoDB
- Node.js
- Express.js
- Aws s3
- JWT statless
- Typescript
- Socket.io
- Otp Email verification
- JWT token used for statless authentication
- Password is hashed using bcypt
- create a post (post can be simple text , photo or a video same as twitter)
- delete Post (only owner action)
- like a post
- comment on post
- repost the other posts (same as twitter retweet without or with qoute)
- section dadicated to user activities
- user can see all posts which liked by him
- user can see all posts on which he commented along with the comment
- user can get all list of followings, he can unfollow if want to directly from list
- all lists in app have pagination applied.
- cursor pagination is implemented as mongodb is nosql database
- cursor pagination runs fine in times of previous posts deletion before loading or new additions (removes case of duplicate posts)
- post id as offset is used along with created time for sort posts
- follow user
- unfollow user
- get following posts
- get list of follwings
- get into the user profile by pressing on user
- comment on post, inspired by instragram comment section (diffrent from traditional)
- get posts in which you replies
- for the replied posts you can again do like,repost and comment
- send message to user in real time
- message can be text or media (audio/video)
- real time unread-counts, new convesations added
- can check typing status and message of sender before it actually sends it
Settings Dark Mode | Settings logout | Sign In |
---|---|---|
Sign Up | Delete Thread | User Profile |
---|---|---|
Following | Comment 1 | Comment 2 |
---|---|---|
Comment 3 | Favorites -Reply | Favorites -Reply Delete |
---|---|---|
Favorites -liked | Follwing | Favorites -follwings |
---|---|---|
Full Text search 1 | Full Text search 2 | Full Text search 3 |
---|---|---|
Profile 01 | Profile 02 | Create Thread |
---|---|---|
Profile Posts | User Profile Posts | Video Player |
---|---|---|
Real-Time Chat 1 | Real-Time Chat 2 | Real-Time Chat 3 |
---|---|---|
Sign In | Sign Up | Feed1 |
---|---|---|
Feed2 | Feee3 | Feed4 |
---|---|---|
Repost | User Posts | Comments |
---|---|---|
Add Comment | Feed5 | UserProfile |
---|---|---|
Qoute Post | Qoute Post 2 | Search |
---|---|---|
Full Text search 1 | Full Text search 2 | Full Text search 3 |
---|---|---|
Create Threads | User Profile | Edit Profile |
---|---|---|
User Profile | User Profile 2 | Favorites |
---|---|---|
Favorites 2 | Favorites 3 | Favorites 4 |
---|---|---|
Profile | Settings | |
---|---|---|
Real-Time Chat 1 | Real-Time Chat 2 | Real-Time Chat 3 |
---|---|---|