Giter VIP home page Giter VIP logo

joatu-v2's Introduction

Code Climate Build Status FOSSA Status

JoatU

Contents

  • About the project
  • Contributing
  • Development Setup (Docker)
    • Requirements
    • Installation
    • Configuration
    • Running the application

About the Project

The Jack Of All Trade Universe is an online marketplace for self-organized exchanges. The JoatUnit is a currency that is generated to promote community activities such as planting community gardens or teaching classes. More information can be found at joatu.com

Contributing

JoatU is created and maintained by Volunteers, and we would love your help. Please feel free to check out our issues and if you fix something, send us a pull request!

Dependencies

Development Dependencies

  • Docker
  • Docker Compose

Production Dependencies

  • Ruby 2.4.5+
  • Bundler
  • Postgres 9.3+
  • Postgis (Postgres Geo Extension) 2.1+

Setup

The following commands will get you set up to begin develpment on JoatU:

  1. Check out the code:
  • git clone https://github.com/joatuapp/joatu-v2.git
  • cd joatu-v2
  • docker-compose build
  • docker-compose run app bundle
  1. Set up environment:
  • You must create a Google Maps API key before completing this next step
  • Once you have obtained your API key, you must add it to the environment file located at <project_folder>/docker/.env.app.conf.
    • edit the file and add the following line to the end, replacing <api_key_value> with the API key that you created.
    • GOOGLE_API_KEY=<api_key_value>
  1. Create the development and test databases
  • Run the following command, it will create the development and test databases in the postgres server
  • docker-compose run app bundle exec rake db:setup
  1. Load seed data and create an initial admin user:
  • docker-compose run app bundle exec rake db:seed [email protected] INITIAL_ADMIN_PASSWORD=password
  • Log in to JoatU using email [email protected], password password.
  • Once logged in, you will have access to administration tools from within the "Manage JoatU" menu.
  1. Start up the app
  • run docker-compose up app
  • The app should now be available on localhost:3000

License

FOSSA Status

joatu-v2's People

Contributors

dependabot-preview[bot] avatar fossabot avatar joatu avatar rsmithlal avatar undergroundwebdesigns avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

joatu-v2's Issues

Proposal: Community Resources

Proposed Idea

Let JoatU support the idea of "Community Resources" which might be available (possibly with some conditions) for community projects to use for further projects. Such resources would have to be renewable or reusable, and might include buildings, public spaces (parks), or smaller things such as a sound system, or a vehicle, or a specialized piece of equipment. The goal is to bring back the commons.

Further details:

  • Some community resources might have a physical location (e.g. building, or park) or might have a storage location if the item is movable, but usually "lives" in one particular spot. These details can be used by people planning events or projects through JoatU, helping them find a nearby venue or piece of equipment they need from nearby and within the community.
  • These would be functionally very similar to Offers made by individual users, but in this case they represent resources not owned by any one person. Perhaps they could be managed by the administrators of the community in which they exist?

Fix app domain name in emails.

All links sent in emails are being sent with the wrong domain name. This may be due to bad configuration of the APP_HOST variable, or due to caching. Needs to be fixed for Alpha deploy. Affects both sign up emails (confirm your address) and messaging emails.

Add Profile References

Goal

Members should be able to leave references on other members' profiles, so that the JoatU community can have confidence in the identity and character of it's members.

Questions:

attn: @joatu:

  • How should references be "rated"?
    • positive, neutral, negative?
    • 1 through 5, or 5 stars?
    • other?

To build:

  • Create Reference resource, which has a reference (text) and rating
  • A member can leave a single reference on any other member's profile.
  • A member can edit their reference.
  • A member can remove their reference.
  • Reciprocal references are displayed together.

Discuss: How do CAPs (Community Access Points) work?

Vision:

Besides supporting bartering and trading using various currencies and goods, JoatU also supports a community based currency that is created and awarded through participating in open-ended, community focused projects. This currency's value, and the amount to be created / awarded for any given community project are both democratically determined by the community involved

NOTE: Calling this community currency "CAPs" for brevity.

Questions:

  • Technical: How will integrity of the CAPs system be maintained, what technologies will be used to manage the currency itself?
  • Which projects will be eligible to create new CAPs? How will this be assessed?
  • How will we ensure that proposed projects are completed to acceptable standards? How do we stop people from cheating the system to earn CAPs?
  • By what mechanism do JoatU members:
    • see new proposed projects?
    • participate in determining a proposed project's value?
    • confirm that a project was completed in a way that benefits the community overall?

Design Requests

  • Have 'How it Works' as the first listed in the header
  • Have 'How it works' as the first section after the main home (before features or benefits)
  • Consider changing the text on the very first page to "A hyper-local marketplace for skills and resources in your community!" (if you do think that's best, take the text "Trade your skills and goods, meet your needs and create vibrant communities!" and place it as a subheader in the Benefits section)
  • Replace 'How it works' text that reads "Understand JoatU Better!" with "Welcome to the Jack of all trades Universe!"
  • In Benefits, replace text "Offer your skills and be rewarded" with "Help others and be helped"
  • In Benefits, switch the places of "Hyperlocal Resource Directory" and "Build bonds with your neighbors" so that the build bonds is the 1st category and the hyperlocal is the 2nd.
  • Consider making the footer the color of the inside of the lime: https://hothousebotanicals.files.wordpress.com/2008/10/lime-photo.jpg
  • In Footer: Replace the Join Us section with "Join Us (next line) JoatU is 100% open source (linking to github) and is always looking for more help on all fronts!" (no need to include email link here)

MOAR

  • Add Sub-headline to Benefits section "Join your hyperlocal marketplace for skills and goods"
  • Different shadings between pages/sections

No Live linking email addresses

Live linking email addresses on the web these days? No thank you. Let the contact section have some weird symbols for the @ sign or something like that please.

Implement JoatU Pods

JoatU pods should be able to be created mutually exclusively. We should be able to invite people to specific pods that would be completely segregated from one another.

For example, if we get a group of people that want to test JoatU in Adelaide Australia, it only makes sense that it wouldn't interfere with the JoatU pod in Montreal.

Follow Us (in Footer)

No links to FB, Twitter, Tumblr, LinkedIn or any of the others posted there currently.

Add support for pictures.

Goal: spice up the site by adding images.

  • Integrate Gravatar as default profile picture
  • Integrate Paperclip gem to handle image uploads.
  • Create Image domain object
  • Create HABTM relations between User and Image and between Offer and Image
  • Allow users to upload a single picture to their profile, to be used as their profile image
  • Allow users to upload an image to offers they are creating / editing, to be the offer's primary image
  • Configure paperclip to store images in Amazon S3 in demo & production environments

Invitation Only Registration

Goal

Update the registration system for our Alpha deploy, so that only members who have been explicitly invited to the app can register.

To Build

  • Integrate Devise Invitable gem
  • Disable devise normal registration, allowing new members to join by invitation only
  • Configure invitations policy so that only admins can send invitations

Discuss: How should Communities in the JoatU app should work.

Vision:

Communities represent thriving, local groups of people meeting in person, on a regular basis, to socialize with each other, work together to improve their own quality of life, and to pursue larger projects of benefit to the world.

Questions:

  • How do we create an online social system that actively encourages people to meet in the offline world?
  • How do we group people together so that they can find each other and also find relevant Offers, while also being flexible enough that opportunities aren't missed.
  • How will we manage the community system as JoatU grows? How will we allow community members to take ownership of their own communities within JoatU?

Ideas:

  • At their root, consider a Community as simply a grouping of people who are share a particular thing in common. Thus we can have communities around a particular interest (bouldering, theatre, cats) or location, or life circumstance (e.g. new mothers).
  • At least some communities should have a location component (ideally represented as a geographic region) so that we can group people who are physically located close to each other, and thus encourage new connections.

Logged In Page

Each Joatu Pod should have a separate logged in page.

A map should be displayed showing all of the users within the area with the Pod clearly identified. All of the points on the map showing users should be 100% anonymous and not be linked to their profiles.

If we are afraid for privacy issues, we can avoid placing people on the map but geo-locate their distances from one another based on their postal codes (this is actually ideal and would give us a very valuable search parameter for the future when we extend to include other pods in our search parameters for those willing to travel further).

Alongside the map should be a short written piece about the JoatU Hub featured for this specific JoatU Pod along with the hours of operation. We should include a picture or a video and brief directions as well. It should also be clearly outlined what the purpose of the JoatU Hub is.

Local (Free) Events should also be displayed next to that. For the meantime, that could be maintained by admin but eventually we can allow for submissions (and also through community offers).

If people propose community offers at a hub, that should mean that the Hub itself should have a JoatU account to confirm the possibility of hosting the proposed event. In which case, the creation of the community offers happening at the hub becomes delegated to the Hub owners/directors.

Everyone should have a main JoatU Pod. You should be able to select multiple pods later on (potentially as a premium feature).

JoatU Pod = Physical area on a map that limits the distance of users so that everyone is within a certain distance of one-another and of the JoatU Hub.

JoatU Hub = A central location within the JoatU Pod that is non-commercial and can be seen as a neutral meeting point that is convenient for all parties. For our first Pod, the hub will be located at a maximum distance of a 20 minute walk from the furthest members. Ideally, if we have enough members, we only include members that are a 10 minute walk from the hub, making everyone within Pod 1 a maximum distance of a 20 minute walk from each other.

Geolocate users.

Gather basic geolocation data from users when the register or accept an invitation to JoatU. Initial implementation is to just ask for a postal code, though we will likely change that / expand that / customize by location later.

  • Adjust invitation acceptance form to include a postal code field
  • Adjust registration form to include a postal code field
  • Assign new users to a pod based on their provided postal code automatically
  • Generate a heatmap on the pod page map, showing areas of greatest membership

Add "manage account" section.

This should be where things like email preferences go, and also where users can change their password or delete their account entirely.

Refactor Storage Interface

Goal:

The goal is to have the domain models function completely independently of persistence. Currently they provide a more restricted interface than active record, but they still leak concerns up the stack, especially the query {} method.

Proposed Solution:

Follow the Repository pattern to provide an interface between Domain and Persistent models. The repository instance will have a method for each type of data that might be required by the front end. These methods will all take one parameter, an object holding the parameters to be used as input to the query. The repository class will be responsible for formulating the query, executing it, and returning the result data as domain models. The repository also has a "save!" method which receives a domain model and is responsible for persisting that domain model to whatever data store(s) are appropriate.

Note: ALL data lookup MUST be done through the Repository. That means queries take parameters related to authentication, pagination, whatever. All the data for the lookup must first be brought together, then the query can be executed and the results returned. This will make query optimization MUCH easier in future by keeping all queries in one place and making them easier to audit.

Improve error handling.

  • Add rescue_from blocks to the ApplicationController to handle e.g. Pundit Not Authorized errors gracefully.

Create a Pod Homepage

Each pod should have it's 'pod homepage' which will display information about the pod, it's hub, and other items of interest to members of the pod.

For the first round, the pod homepage will have the following:

  • Google map, showing the pod's boundaries and Hub location
  • The pod has a description text block
  • An "upcoming events" text block

Translation Requests

  • I looked at the welcome page and everything seems alright. Maybe we should just capitalize « points d'ACC » this way.
  • Also, when I asked for an invitation, I had a non-translated message : "Almost finished... We need to confirm...".
    Oh, and also : the email mesage I received to confirm my email address is all in English.
  • Oh, and the punctuation under the Features You'll Love section is inconsistent (both in English and French). A few periods are missing
  • I would remove "Regardez notre" and keep only "Animation de présentation". It sounds a little too "insistent" to me. ^^
  • I would invert "Inscrivez-vous à notre bulletin d'information" and "Restez informé(e) !".

Embed a MailChimp email sign-up form on the home page.

We want to gather the email address and general location of people interested in JoatU so that we can email them when we open it up to a more public beta. We want to collect some sort of location data (postal code, IP address) so we can roll out city by city.

Make admin privileges usable.

Firstly, we need a way of bootstrapping the first admin user. To do this, the seeds file should check if environment variable SEED_ADMIN_PASS is set, and if it is, should create a user for Alex (email [email protected]), with is_admin = true, and the value of that ENV variable as his password. This will allow us to bootstrap new systems with at least one known admin account.

  • Create admin seeds file.

Secondly, we need to start a management system. Either integrate rails_admin, or add CRUD functionality for users that is accessible only to admins.

  • Implement an administrative solution allowing admins to set other users as admins.

Add Terms of Agreement to Registration

  • create / acquire ToA and post them as a comment on this ticket
  • add a page for the terms of agreement
  • add a checkbox in the registration that must be checked off for registration
  • check off this box

Initial Alpha deploy.

To Do

  • Create a Rails 'alpha' environment in the code-base. Configure it for AWS Elastic Beanstalk deploy (it will be similar to the existing 'demo' env)
  • Deploy app to JoatU AWS account, using Elastic Beanstalk
  • Direct alpha.joatu.org domain to point to the Elastic Beanstalk app

Support Us - In Footer

After 'Mail Us' there's a nice blank space. Let's put this there please. If you have a better wording suggestion, I'm open.

Support us with Bitcoin
1335KiPa82fkgESyNVy7nA74W4vyQjUpwY

Proposal: Organization Profiles

Proposed Idea

Let JoatU support "Organization Profiles", where the profile represents an organization with a physical presence in a given community. Organizations frequently have access to larger resources (buildings, specialized equipment) that they may be able to make available to the larger community to a greater or lesser extent.

Details

  • Organization Profiles could be run/managed by multiple user accounts.
  • Some level of verification by JoatU admins may be required to start a new Organization profile, confirming that the organization exists and you are acting on their behalf.
  • Organizations may be a great resource for organizing community benefit events in their community through JoatU.
  • Organization profiles may cost money to maintain (possibly just for for-profit orgs?). Possible income stream for JoatU!

Create a list / search offers page.

Expand the existing /offers page so that it is nicer to look at and easier to use:

  • Edit the individual offer view used to display offers on this page
  • Add a search bar, allow users to search for offers by title
  • Add ordering options (sort by title, date created)
  • Add pagination
  • Link from each offer to the profile of the user who created it
  • Link from each offer to message the user about that offer

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.