Giter Club home page Giter Club logo

gelilaa / voxbox Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mmelcot/herokuing

2.0 1.0 4.0 14.34 MB

Volunteer xChange Box is a social platform made by students in HYF Belgium that is aimed to connect both volunteers and help seekers within a community so that we can focus on channeling our inner good and assist each other to build a stronger foundation of a better world.

Home Page: https://voxbox.herokuapp.com/

License: MIT License

JavaScript 84.46% HTML 1.04% CSS 14.38% SCSS 0.12%

voxbox's Introduction

Volunteer xChange Box

VoxBox is a social platform made by students in HYF Belgium that is aimed to connect both volunteers and help seekers within a community so that we can focus on channeling our inner good and assist each other to build a stronger foundation of a better world.

Contents

About

VoxBox is a social platform that is aimed to connect volunteers and people who needs some help within a community. VoxBox is made by students in HackYourFuture Belgium as a part of final assignment after following eight months of a solid coding course. This project is inspired by daily difficulties faced both in 2020 during the COVID-19 pandemic and in any other regular days. The team hopes that providing help could be a part of our daily activities as social beings.

Why Volunteer?

Volunteering within a community is a natural way to meet contacts and know our surrounding. Volunteering is also a great example of compassion, solidarity and responsibility - HelpGuide

Click to watch VoxBox video

Tools and Technologies

Front End

  • Figma - Design
  • HTML
  • CSS
  • JavaScript
  • React.js
  • Redux
  • Bootstrap
  • React Bootstrap

Back End

  • Node.js
  • Express.js
  • MySQL
  • Sequelize

Deployment

  • Heroku

Contribution

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b new-branch)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin new-branch)
  5. Open a Pull Request

Contact

You can contact the people who work on this project

License

Distributed under the MIT License. See LICENSE for more information.

Organized for Deployment

A model of how you can set up your project for development, testing & deployment.

General

Configuration

This application reads the secrets from a .env file at the root of this project. A secret is something you don't want to commit to a public repository. The password for your database for instance. A node package dotenv is used to read and parse this file and provides an interface we can use.

Create a file called .env to the root.

DB_HOST=YOUR_IP_OR_DOMAIN
DB_NAME=YOUR_DATABASE_NAME
DB_USER=YOUR_DATABASE_USER
DB_PASSWORD=YOUR_DATABASE_USER_PASSWORD
JWT_SECRET=A_JWT_SECRET_A_RANDOM_STRING_OF_CHARACTERS

DB_HOST A domain or IP the host of your database.

DB_NAME The name of your database. The application will connect to this database.

DB_USER User used to authenticate to the database. Typically a user called root is created in MySQL. Although it is not recommend to use that user in production.

JWT_SECRET Within the app a standard called JWT is used to manage authorization. This requires a random complicated password like string to sign tokens.

Development

Getting started

Make sure you configure your secrets in line with your development environment. See the configuration section.

Install backend dependencies.

npm install

Install frontend dependencies

yarn install

Database

Your application will need to persist data. The interaction with the database is abstracted by an ORM (Object role modelling) called Sequalize .

Make sure you configure your secrets in line with your development environment. See the configuration section. You can create the database and tables by running the sync.js script.

node api/scripts/sync.js

Optionally you can seed the tables with some test data by running:

node api/scripts/seed.js

API (Backend)

To develop just the API separately from the frontend run:

npm run dev-api

This will run your api as though it were part of the full live project. All routes will be have api/ appended before them and a get request to / will return the string "frontend"

Client (Frontend)

To develop just the frontend separately from the API run:

npm run dev-client

DISCLAIMER! this will only work if you have set up a mock-api

Full App

You can also develop the frontend and API in parallel by running:

npm run dev

This script will run the frontend and backend on separate ports, the backend on localhost:5000 with nodemon. The frontend will be run using create-react-app's start script, redirecting all API calls to localhost:5000.

You can find more details on the Instalation Wiki page

TOP


Deployment

The main index.js in this directory is for deployment. It provides access to your api behind /api and statically serves the client from /client/build. You can copy-paste this file directly, there should be need to modify it for your project.

In order for your project to run on Heroku, the main package.json needs a start command. This is already taken care of for you.

Mock

To mock deployment on your local machine you can run these commands. The app will build and run the same as it will on Heroku to help you troubleshoot your deployed project locally.

npm run heroku-postbuild
npm run start

Getting started

Create a Heroku account and install the Heroku cli. Verify the installation with

heroku status

Initialize Heroku inside the project folder by using:

heroku create

Note it is likely you want to create the app with some options, a useful for the project.

Manual

You can deploy your project from your local machine by pushing to the Heroku master repository.

git push heroku master

TOP


Testing

To locally execute your tests, run the following commands

Frontend

cd client
npm install

Backend

cd api
npm install

Continuous integration

Test run on each commit on the master branch using Github actions. The configuration can be found in .github/workflows/node.js.yml.

TOP


Helpful Links

TOP


voxbox's People

Contributors

yildiraykoyuncu avatar gelilaa avatar mametur avatar oguzkarademir avatar lujianna avatar colevanderswands avatar toinne avatar miroslavveljanoski avatar mattekenpis avatar adekimpianna avatar mmelcot avatar

Stargazers

 avatar Michael Tesfay avatar

Watchers

James Cloos avatar

voxbox's Issues

NavBar

  • A navbar component to contain a logo with a link to homepage and navigation links.
  • A SignedOut component visible if a user is not logged in which will contain;
    • SignUp link which directs to the SignUp page
    • LogIn link which directs to the Login page
  • A signed in component visible if a user logged in which will contain;
    • My profile link to direct user to profile page
    • Log out button which will log user out

relates #15
relates #16
relates #17

Homepage, CTA and About us components

  • Create a Homepage component
  • Create the path of the Homepage component in App.js with React Router
  • Create 2 components (CTA, About Us) in Homepage component
  • Create a registrations button to get to the registration page in CTA component
  • Use React-Bootstrap package for styling

relates #15
relates #18
relates #19

create post edited

Post

  • As a profile owner, when I can click ‘create new request’, I will be redirected to a page and asked to give other users more information about the post so they can have a complete information on what kind of help I’m asking.
    The story is considered done where the following information is inserted for posting help.

  • Title of your help (mandatory)

  • Location (mandatory)

  • Category (mandatory)

  • Description (mandatory)

footer-week-2

  • As a visitor I can see a contact address of the firm
    • The story is considered done when there is a contact address in the footer of the page(if we opt for a 'contact us 'button it is considered done when I'm redirected to the contact form page)

I can see the comment owner

Comment

  • As a user, I can see the comment owner...
    - The Story is considered done when i can see the comment owner's
    - Name(mandatory)
    - Date (mandatory)
    - Time(optional)

Home-page userstory-5

  • As a visitor I would like to know a little bit about the firm
    • The story is considered done when I can see that there is an explanation about who VoxBox is and what they stand for.

User story-1 homepage registration-page

  • As a visitor of the home page I can click on the registrations button to get to the registration page.

    • The story is considered done when there is a fully functional
      registration button that will redirect me to registration page.

userstory-9 sign in form

As a registered user I can click on the sign in button which is to get to sign-in page

  • The story is considered done when there is a fully functional sign in button that will redirect me to sign-in page.

User story -4 hidden password

Password

  • As a user, I can see my password is encrypted and hidden
    • The story is considered done when I can see my password as bulleted dotes in the password input .

user story -log-in after sign-up

Log-in

  • As a registered user I want to be able to log in using my credentials

    • The story is considered done given that I am a registered user and logged out, if I go to the log in page and enter my username and password and click on Log in, then the data associated to my user should be accessible.

userstory-Security log-out

Log-out

  • As a user, I want to logout from the system at any time.
    • The story is considered done when I can logout of the application by clicking the logout button and redirected to the home page.
    • remove cookies on client side from server
    • handle logout on client side

Footer

  • A footer component to contain a logo with a link to homepage and navigation links.
  • An address component with the firm's email address if a user wants to contact:
    • Address link which directs to the email pop up box with the email
  • (Optional) A contact button in component in which will contain:
    • When clicked should direct user to the contact-form page

relates #20

News-Feed-date of each posts

  • As a user , I can see the date of each posts
    • The story is considered done when I can see the date of the post inside every card of posts

week-1 discussion points

Today's schedule

Topic: VoxBox week-1
Time: Dec 15, 2020 12:00 PM Amsterdam, Berlin, Rome, Stockholm, Vienna

Join Zoom Meeting
https://us04web.zoom.us/j/71033636346?pwd=RGJDeG1TbWtWZ1BhSDRJSUYyRlE1dz09

Meeting ID: 710 3363 6346
Passcode: U5tFbY

discussion points

  1. User stories: discuss the user- stories that we have till now and select a collective and finale user story. DONE !
  2. Wireframes: create a wireframe(at least a sample) and discuss over it..(we will be using Figma); will be done by @adekimpianna

please comment discussion points you would like to discuss about ...

conclusion

userstory-8 logo that can be used as news-feed redirect

As a visitor I can see the website's logo that can be used as a home button and after login news feed

  • This story is considered done when there is a link on the logo that will redirect me to the homepage from wherever page I am on right now.

comment on the posts of another users

Comment

  • As a user, I can comment on the posts of another users
    • The story is considered done when I can leave a comment under each post that is on the platform.

Home-page userstory-4

  • As a visitor I can see beautiful and heart warming-images
    • The story is considered done when I can see very well positioned pictures on the site

link for create profile page

  • As a new registered user, I am able to create a profile for my self by going to my profile page
    • The story is considered done when the following information is inserted during the construction of profile page
      * First name(mandatory)
      * Location (mandatory)
      * About me (mandatory)
      Relates to #41

userstory-Security - reset password

Password

As a user, I can recover my password if I've forgotten it

  • The story is considered done when after clicking on "Forgot password", I will be redirected to another page to enter my email address receive an email with my password.

  • verify path doesn't work

Userstory-2 sign-in fully functional submit button

  • As a visitor I will be redirected to log-in page when i clicked the submit button
    • This story is considered done when there is a fully functional submit button that will collect my information and apply it to my user profile.

Registration userstory-2

  • As a visitor I have to enter my registration data to be register to the service.
    • This story is considered done when the following information is inserted during registration
      • Email (mandatory)
      • Password (mandatory)
      • Username (mandatory)

Implementation (Back-End)

  • 1. Sign up with user name, password, email
  • 2. verify the email address.
  • 3. before query DB, prevent SQL injection. (Sequelize does this job)
  • 4. check email => if the email exists in DB, then show an error message(redirect to sign-in).
    -- if the user does not have an account--
  • 5. Before storing the user password in DB, then hash and salt it.
  • 6. Store user info in DB.
  • 7. Send a success message to the user.

Tools

  1. node.js
  2. npm
  3. Sequelize
  4. Mysql

I can see the comment owner profile...

  • As a user, I can see the comment owner profile...
    - The Story is considered done when i can see the comment owner's profile by clicking the name of the comment owner...

user story-7 Registration form

  • I am directed to authenticate and/or register when clicking the register button.
    • The story is considered done when a form Content is visible once a register button is clicked for authentication and/or registration

git-branching-model

git_branch

  • master/main is the main branch where the source code of HEAD always reflects a production-ready state.
  • developer contains pre-production code. When the features are finished then they are merged into develop.
  • feature-* is used to develop new features for the upcoming releases. May branch off from develop and must merge into develop.
  • hotfix-* is necessary to act immediately upon an undesired status of master/main. May branch off from master/main and must merge into master/main and develop.
  • release-* supports preparation of a new production release. They allow many minor bug to be fixed and preparation of meta-data for a release. May branch off from develop and must merge into master/main and develop

Creating a feature branch

$ git checkout -b myfeature develop
Switched to a new branch "myfeature"
more details

Nice to read
Understanding the GitHub flow
4 branching workflows for Git
examples
gitflow workflow
Git ignore or remove tracked file

I can read the full detail of the post

  • As a user, I can see the description of the help needed by clicking ‘see more’
    • The story is considered done when I can be redirected to a page where I can read the full detail of the help needed.

News-Feed search by location

  • As a user, I can filter my feed quickly and find the desired content
    • The story is considered done when I can filter by location using the search button on the top of the site.

userstory-6 Security cookie and localstorage

  • As a user I want the website to remember my password if I didn’t log out last session

    • The story is considered done when I can see my profile without logging-in but also not logging-out in the previous visit

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.