🚀 The super app for creators and their audience.

Overview

OneSocial

It's the ultimate super app for creators and their audience. With OneSocial, you can share your thoughts on blog, manage an active newsletter, organize events with people, and do much more.

Have some digital offerings you want to offer to users? No worries, you can sell digital products on the platform, like notion templates, design illustrations, stock images, etc. And if you offer services like video consultation, mock interviews, or resume reviews, you can list them on the app as well. Plus, with integrated chat and video streaming, you can communicate securely with anyone on the platform, including your clients.

Content discovery is a big problem. There are so many nice creators on the Internet, but we never get to know about them. OneSocial platform's discover section ranks the content from all the creators and enables users to find the thing they want.

So you, as a creator or service provider, can chill out a bit and focus more on your work instead of managing a website and having marketing campaigns.

Overview video

Here's a short video that explains the project and how it uses Redis:

YouTube video

How it works

How the data is stored:

The data is stored as Redis JSON, and we're using redis-om-node library to interact with the database. Each of the major fields are indexed or sorted for best performance based on the design requirements. You can view all the model schemas in /shared/src/db.

We're using RediSearch to query and index the data in Redis.

We're also using Redis Streams to publish and subscribe events across multiple services. The chat module is powered by it.

How the data is accessed:

We're using redis-om-node library to access the data. The accesses are broadly of the following categories.

  1. Using the fetch() method provided by the fetchRepository() method in redis-om-node. The effect of it is just like direct retrieval using KEYS.
  2. Using the search() method provided by the fetchRepository() method in redis-om-node. We're using it to filter and fetch the data using the secondary index. The operators equals(), or(), and() are chained based on the application logic. Please note that we're doing it only on the indexed fields, with a minimal performance impact.
  3. Incase of pub/sub communication, we're encoding the data as JSON, and transporting the object as a string.
  4. There're instances where we're using RediSearch for full-text search. Here, we use the same search() method but instead of equals() we're using it along with contains() and containsOneOf().

Note: While RedisJSON is a No SQL database, which embraces de-normalized data modelling, please note that currently redis-om-node doesn't support Embedding Schemas. This was a major limitation, as we had to build things with level one fields. There're several instances where we've duplicated the data in the application, but most of the critical ones aren't done purely to have more consistency.

How to run it locally?

Prerequisites

  • Docker Compose v1.29.2
  • Node.js v16.15.0
  • yarn v1.22.19
  • Stripe CLI v1.11.3
  • OAuth 2.0, credentials for social authentication with google.
  • Google Storage Bucket credentials JSON
  • Cloudinary API key
  • Stripe API key

Local installation

In each of the directory namely backend/, chat/, frontend/, and notification/. There is a file named .env.example. Please fill in the credentials and save it as .env. Also, please put the gcloud-service-account-key.json inside backend/. It should have access to the GCP bucket.

  1. After cloning the repo, run the following command to install all dependencies.
yarn
  1. Now build all the applications.
yarn build
  1. Now, run the following command to start the development server.
yarn start
  1. We're using cookies to authenticate the clients. To keep things secure, we're using cookies with SameSite=Lax. As a result, we're using NGINX reverse proxy to keep the domain of all our individual servers same. Run the following command from the root, and it will take care of everything related to configuring nginx.
docker-compose up --build
  1. The following app processes payments only via webhooks and not using redirect URi. To redirect the webhook calls to our local server, please use the following command:
stripe listen --forward-to localhost/ms/impact/api/payments/webhook
  1. Congrats! 🎉 You've successfully started the OnSocial application on local development environment. Please ensure that you always visit http://localhost/ (i.e on port 80).

Architecture Diagram

landing

You might also like...

This project is a To-do list app which users can store and edit their Todo Tasks. Users can also change the order of their todo

Project This project is about a todo app bundling using webpack Additional description about the project and its features. Built With HTML CSS Javascr

Jun 17, 2022

A simple To Do List application that allows users to save, edit, mark completed, and delete their to-dos, and save their list when application is closed. Build with JavaScript.

To Do List A simple To Do List online application that allows users to save, and manipulate their to-dos, and save their list when application is clos

Dec 20, 2022

This project entails a To-do-List whereby a user can input the tasks they want to do, check the tasks done and also clear all tasks when all of them are completed. It is efficient for a user who want to manage their time and keep track of their day.

This project entails a To-do-List whereby a user can input the tasks they want to do, check the tasks done and also clear all tasks when all of them are completed. It is efficient for a user who want to manage their time and keep track of their day.

Screenshot Here is a screenshot for the project. To-Do-List Project This is a Microverse project that entails a to-do-list which one is able to add an

Jun 16, 2022

NFTKastle is an NFT marketplace where users can mint their pictures as NFTs, list their NFTs for sale, and buy NFTs from other users.

NFTKastle NFTKastle is an NFT marketplace where users can mint their pictures as NFTs, list their NFTs for sale, and buy NFTs from other users. NFTKas

Oct 31, 2022

This React-Based WebPage allows the client/user system to create their own blog, where users can publish their own opinions.

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

Jul 28, 2022

Tip Tweet is a hybrid dApp that provides a simple way to tip a tweet using Ethereum. Authors can claim their tips using their Twitter account. You only need the tweet URL to tip. 🚀 😎

Tip Tweet Table of Contents About Folder Structure Contract Deveopment Starting the App Usage Contributing About Tip Tweet is hybrid dApp that allows

Nov 15, 2022

A sample app (with TypeScript) to help developers bootstrap their Shopify app development.

⚠️ Please, refer to kanzitelli/shopify-app-template-typescript for the most up-to-date version. This repo was used for testing purposes. Shopify App N

Jun 10, 2022

Mag🔥Lit - A super fast and easy-to-use free and open source private encrypted Magnet/HTTP(s) Link Shortener

Mag🔥Lit - A super fast and easy-to-use free and open source private encrypted Magnet/HTTP(s) Link Shortener

Mag 🔥 Lit Mag 🔥 Lit - A super fast and easy-to-use free and open source private encrypted Magnet/HTTP(s) Link Shortener https://maglit.ml Features ✅

Jan 8, 2023

🌗 1 line of code to apply auto dark / light theme and support custom theme for your website. Super fast and lightweight theme library.

themes.js A super lightweight and fast Theme library with auto system color scheme detection in JavaScript. Features Auto detect Dark / Light mode by

Nov 29, 2022
Owner
Subham Sahu
SDE Intern @Mercari, Inc | Ex-Intern @github, @Samsung Research | Google SoC '20 @creativecommons | Undergrad at IIT Ropar
Subham Sahu
Hemsida för personer i Sverige som kan och vill erbjuda boende till människor på flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo för kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023
See a banned user's profile, their friends, their favorite games, their followers etc.

Roblox-Banned-User-Viewer AKA BanView See a banned user's profile, their friends, their favorite games, their followers etc. Ever wondered how to view

SCR1PP3D 4 Nov 18, 2022
Basic types & utilities for Strapi v4 and plugin creators

Strapi v4 - Types & utilities Basic set of types and utilities for Strapi v4 and plugins creators A developers goodie for Strapi Headless CMS which pr

 VirtusLab Open-Source 7 Oct 14, 2022
Pay Creators to Promote your Product in $CRYPTO

Next.js + Tailwind CSS Example This example shows how to use Tailwind CSS (v3.0) with Next.js. It follows the steps outlined in the official Tailwind

Satyam Kulkarni 1 Feb 7, 2022
✂ An online image cropper for content creators

Introducing CropScore ✂️ Resolutions and aspect ratios should be the last things you worry about. About ?? CropScore is an online image cropper for co

Madza 49 Dec 30, 2022
Omnuum. All about creators.

Summary There are a lot of NFT projects and PFP projects. But, there are limited tools and services for trying new project. Artists or creator whoever

Omnuum 18 Dec 15, 2022
A website to list tech twitter creators, across the world.

TechCreators A website to list tech twitter creators, across the world. Languages/Tools ????‍?? Demo Check out the website: TechCreators ???? Prerequi

Pushkaraj Kulkarni 18 Jan 3, 2023