Skip to content

adamscript/tomateto-react

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tomateto React - Social Media Web App


tomateto-logo


vercel-badge demo-badge

Introduction

This is a social media web application powered by React and provides main functionalities of a social media app such as creating new posts, liking a post, following a user, etc. With this web app you can interact and show data requested from Tomateto API through user interface.

This is the front-end side of Tomateto. To learn more about the back-end side, click here.

Demo

Here is the working live demo : https://tomateto.com

Built With

Features

Single Page App (example code)

By building this web app as a single page app, users can navigate through the pages without reloading the entire page. This feature is powered by React Router.

Responsive Design (example code)

This web app will adapt its layout based on the device it’s currently running on. So it will always look good whether you use it on mobile or desktop.

Desktop Mobile
home_desktop home_mobile
user_desktop user_mobile
post_desktop post_mobile
newpost_desktop newpost_mobile

Instant Search (example code)

Users can type in keywords and get results instantly.

Image Resize & Compression (example code)

To reduce pixelation on pictures loaded on the page even on the smallest scale, every picture uploaded will be compressed and resized by implementing image processing. This procedure also reduces upload size. This feature is powered by Pica.

Authentication

Users can sign up and log in to create posts, comments, and follow other users. They also can reset password, change email, and delete their account when needed. This feature is powered by Firebase Authentication.

Error Logging (example code)

When the web app detects an error, it will store the error message, timestamp, and the action that causes the error in a dedicated NoSQL database to aid in the debugging and troubleshooting process.

Dark Mode (example code)

It’s just better for your eyes.

home_dark_desktop

Main social media functionalities :

  • Follow and unfollow user
  • Create, edit, and delete post
  • Like and unlike post
  • Create and delete comment
  • Like and unlike comment
  • Upload photo, powered by Cloud Storage for Firebase
  • Add emoji, powered by Emoji Mart
  • Edit profile

Reflection

Through this project, my main goal was to learn how to write my own REST API and the React app to interact it with. I also wanted to use this opportunity to learn about cloud, containers, testing, and CI/CD. Initially I wanted to build it as microservices but I figured it was a bit too ambitious for what I was trying to build with the amount of time that I had, so I built it as a monolithic app instead.

If I had more time, I would add these :

  • Implement websocket to add features like notifications, private message/chat, live feed, etc.
  • More advanced text editor to add features like mentions, hashtags, hyperlink, etc.
  • Add tests for the react app.
  • Add pagination, I figured that there won’t be that many posts so I plan to add this later when it’s absolutely needed.
  • Optimize it further by implementing caching (perhaps Redis?).

Support

If you are having issues or found a bug, feel free to open an issue. Also if you have questions about the project, feel free to reach out at: adam@adamscript.com.