Giter Club home page Giter Club logo

mybonways's Introduction

Mybonways

Setup process for mybonways

Before cloning this repository, make you sure you have the following installed:

After installing all of the above:

  1. clone the repository to $GOPATH/src/github.com/tonyalaribe/mybonways like this: (Assuming you have your $GOPATH setup correctly)
	$ go get github.com/tonyalaribe/mybonways
  1. Next install buffalo:
	$ go get -u -v github.com/gobuffalo/buffalo/buffalo
  1. change directory to the repo ($GOPATH/src/github.com/tonyalaribe/mybonways) and Install javascript modules:
	$ npm install
  1. Set up your database correctly according to the database.yml OR run:
	$ buffalo db create -a

buffalo will automatically setup the database.

NOTICE: If for any reason buffalo throws any errors of packages not found, change to its directory:

$ cd $GOPATH/src/github.com/gobuffalo/buffalo/

and install it's dependencies (go get ./...)

$ go get ./...

Download and install POSTGIS extension for postgresql before porceeding to the next step

Create the tables by running the migrations:

$ buffalo db migrate up

Add data to the database for development:

$ buffalo task db:seed

Finally, start the application (in the repository directory $GOPATH/src/github.com/tonyalaribe/mybonways):

$ buffalo dev

This buffalo command will watch the application and automatically rebuild the Go binary and all it's assets. Open your browser to localhost:3000. The page should appear.

Go over to http://gobuffalo.io to explore the buffalo documentation.

mybonways's People

Contributors

spankie avatar tonyalaribe avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

vulcangz

mybonways's Issues

Investigate map view

Please check if the map view still works well, and fix if it doesnt. promos dont seem to be showing on it.

2 in 1 should be categories

2 in one should manually list catogories and a row of promos per category

See all can take you to a kind of search result page showing only results for that category. One way of doing this is modifying search result page to also work with a category option. When category is set, the results will be all under the category

Cat 1. see all>>
[promo][promo][promo][promo]
Cat 1 see all>>
[promo][promo][promo][promo]
Cat 1. see all>>
[promo][promo][promo][promo]
Cat 1 see all>>
[promo][promo][promo][promo]
Cat 1. see all>>
[promo][promo][promo][promo]
Cat 1 see all>>
[promo][promo][promo][promo]

loading screen, when content is being loaded

when content is still being loaded on the home page or llist views in general, there should be a way for the user to know content is being loaded, instead of seeing a blank screen

Tab navigation on promo details page.

Implement a tab navigation on the promo details page. This tab should be javascript based, and should not rely on the router. Switching tabs should simply switch out content.

Preferably the content should slide in. You could look into using animate.css, if that would help. (You could leave this for later if its taking too much time)

Form improvement

Improve the various submissions forms to:

  • Handle error messages
  • Display loaders upon pending requests
  • and clear the values after successful submissions.

Promo Detail Page: Locations Tab

The locations tab should display the list of branches a store has. With their addresses, and a button to get directions to the location on the map.

Improve the README

Write all the missing steps from pulling the repo, to creating the db, and running the db, and in the future, to deploying the app. Make it more personalised to our project, so anyone can get the app running and know their way around it, without asking us each time. Clear this as soon as possible, as it would be an issue that we'll keep going back to

Analytics

A route to get all the common analytics system wide and for merchant respectively should be made.

The numbers at the top of the merchant and admin dashboards should be replaced with live data. @spankie

Stores API.

Make provisions for merchants to add, delete, and create new stores.

Each store should have

  • branch location
  • branch GPS coordinates,
  • branch address

Location permision

Make location access compulsory for users on first visit. Set the location as default location with localforage....

storing password as string

YOu're storing password as string. Take cue from the merchant signup. Also, you should a field called provider, so you can specify how the user signed up, whether via email or social media (there would be social media login support)

Build Merchant account creating handlers and flow

Using the mithril page i created, build a handler, that stores the merchant store to the db, and generates a verification url that would be sent to the merchant's email. For now, dont send the emails. Just log the url to terminal, such that the we can manually visit the URL to complete the verification process, before the user would then be able to login. You can add a flag in the db to signify verified accounts. so when the user visits the url, the flag is turned to true. Then the login form would equally have to make sure the flag is true, before login anyone in.

Then create the login flow as well. THese are the details.
localhost:3000/api/merchants/signup
(should log verification url in the terminal)
Make sure passwords are encrypted with bcrypt and the bcrypted passwords stored

payload: 
{
"CompanyName":"<name of company",
"CompanyID":"<a unique company id that would be used in login in>",
"MerchantEmail":"<merchant email>",
"MerchantPassword":"<merchant password>"
}

response: 
{
"message":"successfully created merchant, proceed with email verification(or something better)"
}

localhost:3000/api/merchants/login
Should generate a json web token (jwt). If its giving you dificulties, leave it for me.

payload:
{
"MerchantEmail":"<merchant email>",
"MerchantPassword":"<merchant password>"
}

response:
{
"message":"successfully....",
"Merchant":{
"CompanyName":"<name of company",
"CompanyID":"<a unique company id that would be used in login in>",
"MerchantEmail":"<merchant email>",
"MerchantPassword":"<merchant password>"
},
Token:"xxxxxxx.....",
}

User friendly account verification page

Create a very simple account verification successful page, for merchant and user verification. so instead of showing json, it just shows the page. The page should be simple, just a static page, no mithril. And rendered using the same way index.html is rendered. Design it as you see fit, but a logo, a bit of text and a link to the main app (index if user and merchant dashboard if merchant signup)

Make a reservation. And Manage reservations.

A signed in user should be able to make a reservation for a promo. And the merchant should be able to see a list of reservations, and search reservations by the name of the user or the reservation id. All users should get an id after making a reservation. The id is what they would use to redeem the reservation, like a coupon code.

Hence the need for a merchant to be able to verify a reservation code, and to mark that the code has been used(redeemed).

Show hot items on the map in the map tab.

the map tab should be showing the map, with the promos highlighted to show the same promos on the hot tab

cos on desktop view they are supposed to be side by side
screen shot 2017-07-16 at 7 17 51 pm

why are you storing objects as null?

Stop storing objects as null. Instead, if you want to clear an object, you store an empty object into it. eg NewUser = {}

Nulling objects brings in a lot of unpredictability and bugs. I keep telling you to read javascriupt the bad parts.
screen shot 2017-07-11 at 8 40 02 am
screen shot 2017-07-11 at 8 42 12 am
screen shot 2017-07-11 at 8 42 19 am
screen shot 2017-07-11 at 8 42 25 am

User authentication

Users should be able to signup. It should be written in a pllugable way. So the user might be able to signup and login via email and password, or via social auth. Hence the signup provider should be taken note of.

List of promos and new promos

Create a list of merchant promos.

Make the table responsive for mobile

create form to add to the list of promos

list should contain image reservation count etc. and edit and delete button.

Hook Signup form with api

POST: localhost:3000/api/merchants
request json: 
{
	"company_name":"My BonWays",
	"company_id":"mybonways",
	"merchant_email":"[email protected]",
	"merchant_password":"password"
}

response json:
{
    "id": "a1d00aeb-ea86-4440-9823-157c73afbc6b",
    "created_at": "2017-06-13T10:45:43.340797122+01:00",
    "updated_at": "2017-06-13T10:45:43.340798293+01:00",
    "approved": false,
    "company_name": "My BonWays",
    "company_id": "mybonways",
    "merchant_email": "[email protected]",
    "merchant_password": ""
}

Endeavor to use m.withAttr("value") to bind the form values to an object. Then create a model in the model folder. You could call it User or anything you prefer that makes sense. All logic should be in the models(but no mithril or html code should be there, other than m.request). The model should be such that it can be reused in a non mithril application

Comment and Favorite

Comment and favorite posts. Comments would probably happen in a third tab in the promo details page. and then the comments count and favorites count would need to be shown on the promo item

Grifts

Improve the gifts for proper testing...

Neighbourhoods in Douala
Bonaberi
Bonanjo
Joss
Bonapriso
Nkondo
New Bell
Bali
Nkongmondo
Koumassi
Bali
Bonadoumbe
Bonadouma
Bonadibong
Akwa
Akwa nord
Nkololoun
Ngangue
Bonaloka
Brazzaville
Km5
Yabassi
Ngodi
Bonamikengue
Deido
Bonateki
Bepanda
Ndogbati
Bassa
Makepe
Ndogbong
Zone industrielle bassa
Nylon
Madagascar
Bonadiwoto
Aéroport
Tergal
Cité des palmiers
Beedi
Logpom
Kotto
Bonamossadi
Bell
Youpwe
Port
Bessengue
Ndogbassi
Makepe missoke

Categories:
1 - Beauté/Cosmetique

2 - Bricolage / Decoration

3 - Cadeau

4 - Enfants

5 - Supermarché/Shopping

6 - Banque/Service

7 - Sorties / Restaurant / Snack

8 - Transport /Service

9 - Santé / Bien-être

10 - Location

11 - Electronique / Service

Make the header image area a slider, And create an admin flow for adding new slider content.

The header image currently contains a magical milkshake demo image. Make it possible to add new slider images, list existing slider images, and delete slider images. Then make the header image a slider that loads content from the server. The slider content should consist of an image src url, and a link. Such that when the particular slide image is clicked, it loads the given page, which could be an internal link(link to a promo on the site, or a link to the advertisers site). For the slider, make sure anything being used, does not rely on jquery, and is pure javascript based.

Reimplemenet date pickers

Re implement all date pickers in the app, specially the ones for adding promos. Promos, are supposed to track both date and time, but currently only track date. So its not possible for a merchant to start a campaign that ends by 4pm sharp tomorrow. Use https://chmln.github.io/flatpickr/ for the time-date picker. Cos its cross browser compatible, and supports both time and date.

Starting Working on html and css for a dashboard, using mithril and Tachyons

Build a dashboard for merchants, using the front end design as a starting point. The dasboard is going to have the following functionality:

Manage the number of branches of a store (Each branch would include its address and its gps coordinates)
Add promo items to an inventory
Delete items from the inventory
View list of items in the inventory

Manage members who have access to the store.
I should be possible for the owner of the store to add new users to the store
So these new users would be able to manage the store as well(Useful for stores with multiple employees)

The login process into a store as a merchant should include:
Store id,
email
password

Design only the static html

fixes

public view

  • remove randow code on category label** .
  • give the possibility to filter the list by category
  • we don't have mybonways logo anywhere
  • Add the favicon
  • Remove the decimal part on percentage value when not necessary
  • Copyright with capital C at bottom. And the name is MyBonWays in the copyright.
  • Products may have quantity
  • Currency is F CFA not CFA
  • Category label must fit on one line:
    you could replace these one:~
    Sorties/Restaurant/Snack --> by 'Fun'
    Split Restaurant/Snack in two categories
    Split Supermarché/Shopping in two categories

Admin view

Admin should be able to see all promos

Categories. Trace flow, and make sure it works well.

Trace the flow of categories. when you add a promo, how is the category stored? Make sure the category that shows on the promo list on the front end side, is not a slug. I dont even think we need a slug with categories, but if we're using a slug, the category that users see should be normal text, and not slugs with random characters at the end. make sure when you click see all on a category, it loads the categories promos

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.