Coder Social home page Coder Social logo

amygao9 / spendrs Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 4.99 MB

A Money Social Networking Platform ๐Ÿ’ต - A platform where users can post about their spendings on items they buy, and view analytics on their spending habits.

Shell 0.05% JavaScript 80.72% HTML 6.05% CSS 13.18%
mern-stack website

spendrs's Introduction

Spendr - team31

Deployed Application

https://spendrs.herokuapp.com/

Instructions

Frontend-web

  • navigate to the frontend-web folder
  • run npm install to install packages and dependencies
  • run npm start to get the development server going
  • navigate to http://localhost:8000/ to run the server on localhost!

Backend

  • navigate to the backend folder
  • run npm install to install packages and dependencies
  • run npm start to get the server going on http://localhost:3000/

API Routes

  • Please view our API.md for an overview of the routes in our server and instructions about usage with Postman.

User credentials

Admin user

username: admin password: admin

Regular user

user 1) username: user password: user

Use cases

Admin user

  1. as an admin user logging will provide us with the list of registered users and basic information
  2. as the admin user you will be able to view all peoples profiles regardless of privacy setting
  3. the admin also has permission to delete any user they want

Regular user

  1. regular users can create accounts and login/log out to enjoy all the key features.

Key Features

Views

Home Page

Dashboard/Feed

  • https://spendrs.herokuapp.com/dashboard
  • Users can see their own posts about their spendings, as well as posts made by people they follow. Additionally, they can comment on and like each others posts, as well as view other peoples comments/likes.

Create/Delete Posts

  • Users can create a post about their purchases, with names, links prices, captions, categories as well as optional photos.
  • In either feed or profile, users can delete their past posts.

Analytics

  • https://spendrs.herokuapp.com/analytics
  • The analytics dashboard allows users to visualize their spending habits and budgeting. It has a summary section of monthly spendings and purchases.
  • It also has an interactive pie chart of their spendings based on different categories as well as a time series of their past spendings.

Profile

  • https://spendrs.herokuapp.com/profile for your own profile or https://spendrs.herokuapp.com/user for another user's profile
  • Spndr users can view have their own user profile with all of the user's posts, with the option to add a display photo. They can edit their bio and username through the profile tab. In addition, users can view their followers/following and access their friends' profiles as well.
  • Users can also edit their own username as well as their user bio.
  • By clicking on the followers/following, there are direct links to other member's profiles.

Search Users

  • Users can search for other user profiles based on username with an autocomplete feature.
  • This will bring you to other user profiles where you will have the option to view their posts and follow/ unfollow them.
  • Other users profiles will be rendered depending on their privacy status. Public profiles will be available to all users, Friends Only profiles will only be viewable by followers, and private profiles are only viewable by the owner.

Settings

  • https://spendrs.herokuapp.com/settings
  • The settings page displays account information and allows the user to make their profile public/private/friends only.
  • The user also has the option to delete their account or change their password

Admin View

User Authentication

JWT

  • We are currently using JWTs to provide user authentication. These JWTs are generated from the backend and returned when the user logs in or signs up. We use a custom axios client with interceptors that provide the JWT to protected routes in the header. This JWT is checked on every page to make sure it is valid. If it is invalid or expired, the user is logged out. Cookies
  • We are using cookies to store the JWTs. The cookies are initially stored on log in and removed on log out or when the JWT is invalid and expires.

Usage

The user with the username, password user is already prepopulated with data. This user can be used to demonstrate the a normal user for the application. The user is also following some other users to demonstrate the different features and views above.

The admin user with the username and password admin is set up. When logging in, you have a view of all of the users as well as specific data about each user. The admin can also choose to view profile or delete the user.

You can also create a new account to see what a new account looks with no data. Click create a new account on the login screen to do so.

API

API documentation can be found in API.md in the same level as this README.md

Notable Third Party Libraries Used in Phase 1

  • React Router DOM
    • Used for routing within our app.
  • React-Bootstrap
    • We used React Bootstrap for some prestyled components. For the most part, everything in the view was created by us with React and CSS.
  • React-Lazyload
    • Used to lazyload posts in the dashboard so they are not all loaded from the first load.
  • React Timeseries Charts, React Minimal Pie Chart
    • Used for the graphs displayed on the analytics page.
  • React-Hook-Form
    • Used for login credential validation
  • Cloudinary
    • Used for image uploads
  • nodemon
    • Used for hot refreshes when updating code
  • jsonwebtoken
    • Used for using making webtokens so we dont send username and password

Notable Third Party Libraries Used in Phase 2

  • axios: For making promise based api requests
  • browser-image-compression: For compressing uploaded images
  • js-cookie: For handling browser cookies
  • lodash: Used for miscellaneous utility functions.
  • moment: Used for formatting.
  • pondjs: Used as a dependency for react-timeseries-chart
  • react-alert: For making custom react alert pop ups
  • react-icons: For icons in our UI
  • react-infinite-scroller: To load new posts in the dashboard feed
  • react-lazyload: For lazy loading dashboard posts and profiles
  • react-minimal-pie-chart: For rendering our analytics data
  • react-password-strength-bar: For registration and creating new passwords
  • react-redux: For global state management
  • react-scripts: Used for React app setup.
  • react-timeseries-charts: For rendering our analytics data
  • react-tiny-link: For displaying links in the post with a preview.
  • react-tooltip: Used alongside react-minimal-pie-chart
  • react-transition-group: For navbar animations
  • react-useanimations: For animations in the website.
  • redux: For global state management.
  • redux-devtools-extension: For debugging redux in the browser.
  • redux-thunk: For middleware functions that use axios.
  • web-vitals: Used as a dependency for react-timeseries-chart.
  • testing-library/jest-dom
  • testing-library/react
  • testing-library/user-event
  • body-parser
  • cloudinary
  • connect-multiparty
  • cors
  • dotenv
  • jsonwebtoken
  • node-gyp
  • node-pre-gyp
  • nodemon

spendrs's People

Contributors

ashih2018 avatar codeturtle00 avatar mooncrest avatar amygao9 avatar mark-kazakevich 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.