Coder Social home page Coder Social logo

radish-garden-media's Introduction

Radish Garden Media

Repository directories are added as submodules that hold references of source code.

About

Radish Garden is my full-stack project which is a social media platform for plants across the globe. ๐ŸŒ ๐ŸŒฑ By the way plants have better network (WoodWideWeb) but anyways I gave it a try. Plants are awesome. They deserve social media on the internet.
Radish Garden, explore and make plant friends.

some keys to navigate easily

  • Create new account
  • Or log in with already exiting account which will make it easy to navigate
  Email:     lemon@lemon
  Password:  lemonLemon0808

Features and stack

Features

  • Unique username creation (email & password)
  • Server side authentication
  • Searching all users by username
  • Users activity monitoring
  • User session recording (online users)
  • follow/unfollow users
  • add/edit/delete posts
  • like/unlike posts
  • add/delete/update comments/nested comments
  • create conversations
  • send/unsend messages

User profile customization

  • change/update username
  • change/update password
  • update/delete avatar picture
  • update/delete banner picture
  • update/delete user info components (aboutMe/location/dimension)

Stack

Client Side
  • React
  • React Router @6
  • Material UI
    • Material UI/core
    • Material UI/icons
  • CSS
Server Side
  • NodeJS
    • express.js
  • MongoDB
    • Mongoose
    • GridFSBucket
  • Multer
    • multer-gridfs-storage
  • Bcrypt
  • Socket.io
Hosting service
  • Digital Ocean
    • App Platform

Challenges

There is no doubt that I've learned a lot while building and experimenting with this project. Although, some features I initially intended to implement are not yet implemented I encountered lots of code-structuring and designing related challenges which made me to look at the whole developing process in a different way. As far as the app is far from ideal solution and some of required functionalities still are in the line to be implemented, surely I'm going to learn more.

Database and Data Structure

I tried to structure the data so that it is saved and retrieved as easily as possible. To do so I've followed MongoDB's data modeling design and came up with the following solution.

// User
{
        "_id": "636d861ee..",
        "profilePicture": "filename/8b69bb38...",
        "coverPicture": "07cb2931e550814d16fa0842e1d8229b",
        "followers": [user_alpha_id, user_beta_id],
        "following": [user_alpha_id, user_beta_id],
        "username": "babygroot",
        "email": "babygroot@babygroot",
        "password": "*************",
        "desc": "I'm gloot and I'm tlee",
        "dimesion": "earthy_earth_port_8080",
        "location": "pandora",
}


// Post
{
        "_id": "636d861ee...",
        "userId": "user_alpha_id",
        "desc": "hiyo evelybody I'm gloot and I'm new to this place",
        "img":"filename/8b69bb38.."
        "likes": [user_alpha_id, user_beta_id],
}

// Conversation
{
        "_id": "81eB4312h...",
        "members": [user_alpha_id, user_beta_id],
}

// Message
{
        "_id": "43yoEb72...",
        "convoId": "81eB4312h..."
        "senderId": "636d861ee..."
        "text": "hello!"
}


// Image
{
        "_id": "43yoEb72...",
        "userId": "636d861ee...",
        "filename": "filename/8b69bb38...",
        "fileId": "21uH14bb...", 
        "originalName": "babygroot.png",
}

Bidirectional communication

Providing a low-overhead instant communication channel between the server and the client are what I've never before implemented in the app. My main goal was keeping track of user session recordings and also receiving and sending instant messages in the chat-box without reloading the page.

File uploading

Storing files directly into a database through a single API call had intrigued me for quite some time. That is where GridFS came into the picture for me. Using MongoDB GridFS and helping multer and multer-gridfs-storage job got done.

radish-garden-media's People

Contributors

sedsawyum avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.