Skip to content

Files

Latest commit

b13a9c0 · May 10, 2020

History

History

social-media-project

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
May 10, 2020
May 10, 2020
May 10, 2020
May 10, 2020

Social Media Sample Project

Database Setup

$ mysql -u root
create database cbsocialmediadb;

create user cbsocialuser identified with mysql_native_password by 'cbsocialpass';

grant all privileges on cbsocialmediadb.*  to cbsocialuser;

flush privileges;

Project Structure

Backend (Server)

src
├── controllers         # functions to connect routes to db operations
├── db                  # db connection and model definitions
├── public              # html/js/css files for static part of site
└── routes              # express middlewares (route wise)

Frontend (Client Side Code)

src/public
├── app                                     # our own frontend js code
│   └── common.js
├── components                              # own own html snippets
│   └── navbar.html
├── css                                     # css libraries we are using
│   └── bootstrap.css
├── fonts                                   # fonts that we are using
│   ├── Muli-Italic.woff2
│   ├── Muli.woff2
│   └── muli.css
├── index.html                              # first / home page
└── js                                      # js libraries we are using
    ├── bootstrap.js
    ├── jquery-3.4.1.js
    └── popper.js

Business Logic

Users

  1. create users this will create a new user with a random username

Posts

  1. create post this will create a new post, required fields are

    • username (the author of this post)
    • title
    • body
  2. show all posts list all existing posts, we should have following filtering support

    • filter by username
    • filter by query contained in title (search by title)
  3. edit posts TBD

  4. delete posts TBD

Comments

  1. show all comments (of a user)

  2. show all comments (under a post)

  3. add a comment

API Documentation

users

  1. POST /users

Creates a new user with random username and an user id

  1. GET /users/{userid}

Get an user with a given user id

  1. GET /users/{username}

Get an user with a given username

posts

  1. GET /posts

Get all posts by everyone

  1. POST /posts

Create a new post. Required fields in body -

userId=
title=
body=