Live DEMO: here
This project is made for educational purposes and a lot of stuff could be made a lot simpler. I choose to do it in a more fine grained way to learn.
- React
- MobX (authentication and user store)
- Firebase (Authentication, Firestore, Cloud Storage, Hosting)
Below you can see how I structured my database.
- Sign in with Google
- Submit post of text type
- See recent posts
- Comment on posts
- Vote posts and comments
- Delete comments
- use tests to minimize manual debugging and specifically regression tests
- use a relational database instead of a non-relational (firestore) for simpler data managment
- for a small app I wouldn't complicate things this much as simpler methods would be sufficient
- use TypeScript as it is statically typed, though I resolved a chunk of debugging difficulties with PropTypes
- use Styled Components instead of JSS because of a bigger community and support