Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nemanjam/audio-twitter
Twitter clone with audio messages made with React, Apollo and MongoDB.
https://github.com/nemanjam/audio-twitter
apollo-client apollo-server graphql material-ui mongodb mongoosejs react wavesurfer-js
Last synced: 30 days ago
JSON representation
Twitter clone with audio messages made with React, Apollo and MongoDB.
- Host: GitHub
- URL: https://github.com/nemanjam/audio-twitter
- Owner: nemanjam
- Created: 2019-12-26T21:39:14.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2023-01-05T13:57:00.000Z (almost 2 years ago)
- Last Synced: 2024-09-28T20:41:11.900Z (about 1 month ago)
- Topics: apollo-client, apollo-server, graphql, material-ui, mongodb, mongoosejs, react, wavesurfer-js
- Language: JavaScript
- Homepage:
- Size: 8.14 MB
- Stars: 72
- Watchers: 10
- Forks: 25
- Open Issues: 33
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Audio Twitter
## Twitter clone made with React, Apollo, MongoDB, Material-UI, Wavesurfer
This is fullstack clone of Twitter with audio instead text messages. It is made for educational purposes only and it is not affiliated with Twitter in any way.
## Features
- General functionalities
- Record voice, preview oscilloscope, redo recording, preview recording, cancel recording, preview recorded waveform
- Store audio files to server
- Play/pause/stop audio messages with waveform preview
- Autoplay existing messages, autoplay incoming messages
- Limit autoplay duration to 5, 10, 15 or 20 seconds
- Timeline feed of messages of the following users
- Notifications feed, non-seen notifications count
- Profile page with user's messages feed, following and followers lists
- Social network functionalities: follow/unfollow users, like/unlike messages, repost/unrepost messages
- Local state management with Apollo cache, without Redux
- Edit avatar, cover, name and bio- Authentication
- JWT auth on http and websocket links
- Sign up with email/password, sign in
- User/admin role
- Protected routes with HOCs- Design
- Material-UI responsive design
- Choose between 4 different green/orange light/dark themes
- Persist theme in local storage
- Tabs navigation
- Popover with user card- GraphQL
- Queries User: users, user, me, whoToFollow, friends
- Queries Message: messages, message
- Queries Notification: notifications, notSeenNotificationsCount
- Mutations User: signUp, signIn, updateUser, deleteUser, followUser, unfollowUser
- Mutations Message: createMessage, deleteMessage, likeMessage, unlikeMessage, repostMessage, unrepostMessage
- Subscriptions: messageCreated, notificationCreated, notSeenUpdated
- Relay cursor paginations: Messages, Notifications
- Loaders: File, User
- Client Queries: autoplay, theme
- Client Mutations: updateAutoplay, setTheme- Database
- Mongoose Models: User, Message, File, Notification
- Seed database with Faker## Screenshots
![Screenshot1](/screenshots/Screenshot_1.png)
![Screenshot2](/screenshots/Screenshot_2.png)
![Screenshot3](/screenshots/Screenshot_3.png)
![Screenshot4](/screenshots/Screenshot_4.png)
![Screenshot5](/screenshots/Screenshot_5.png)
![Screenshot6](/screenshots/Screenshot_6.png)
![Screenshot7](/screenshots/Screenshot_7.png)
![Screenshot8](/screenshots/Screenshot_8.png)
![Screenshot9](/screenshots/Screenshot_9.png)
![Screenshot10](/screenshots/Screenshot_10.png)
![Screenshot11](/screenshots/Screenshot_11.png)
## Libraries used
### Client:
- React `16.12` with functional components and Hooks
- Material-UI `4.8`
- Apollo Client `2.6`, Apollo Upload Client
- React Mic, Wavesurfer.js `3.3`### Server:
- Apollo Server `2.9`, Apollo Server Express
- Mongoose `5.8`
- Faker, Dotenv, Babel## Installation and running
- `git clone [email protected]:nemanjam/audio-twitter.git`
- `cd audio-twitter/client`
- `cd audio-twitter/server`
- `npm install`
- rename `.env.example` to `.env` and set database url and JWT secret
- `npm start`
- visit `http://localhost:3000` for client and `http://localhost:8000` for server## References
- [Twitter](https://twitter.com)
- Robin Wieruch [React Apollo boilerplate](https://github.com/the-road-to-graphql/fullstack-apollo-react-boilerplate)
- Robin Wieruch [Node.js with Express + MongoDB boilerplate](https://github.com/the-road-to-graphql/fullstack-apollo-express-mongodb-boilerplate)
- Apollo [docs](https://www.apollographql.com/docs/)
- Material-UI [docs](https://material-ui.com/getting-started/installation/)## Licence
### MIT