Giter Site home page Giter Site logo

code4romania / covid-19-ro-help Goto Github PK

View Code? Open in Web Editor NEW
18.0 9.0 41.0 2.23 MB

Platform for NGOs to create donation requests and to broadcast their services in an emergency

License: Mozilla Public License 2.0

Python 58.88% Dockerfile 0.25% Makefile 0.02% HTML 37.05% Shell 0.29% CSS 3.32% JavaScript 0.19%
civic-tech

covid-19-ro-help's Introduction

RO help • Live

GitHub contributors GitHub last commit License: MPL 2.0

This project is the result of the 2019 Civic Labs research. You can view the knowledge base of the project on the Ro Help Civic Labs page.

Check out the prototype as well!

Ro Help is a platform meant to help NGOs during an emergency situation. The NGOs can ask for donations, resources or volunteers, and users can browse the needs that various NGOs have. Initially prototyped with an earthquake in mind, this project was pushed at the forefront of our Tech for Social Good development program during the COVID-19 pandemic.

See the project live

Objective: Safe and coherent collection of aid.

How: The application displays verified and validated NGOs for the collection and distribution of resources.

Concept developed as part of the Civic Labs program of Code for Romania.

Contributing | Built with | Deployment | Feedback | License | About Code4Ro

Contributing

This project is built by amazing volunteers and you can be one of them! Here's a list of ways in which you can contribute to this project.

If you want to make any change to this repository, please make a fork first.

Help us out by testing this project in the staging environment. If you see something that doesn't quite work the way you expect it to, open an Issue. Make sure to describe what you expect to happen and what is actually happening in detail.

If you would like to suggest new functionality, open an Issue and mark it as a [Feature request]. Please be specific about why you think this functionality will be of use. If you can, please include some visual description of what you would like the UI to look like, if you are suggesting new UI elements.

Built With

Django

Programming languages

Python 3

Development

Docker is used to run the development version, so you'll need to install Docker and docker-compose. Once installed, you just need to copy cp .env.example .env and run docker-compose up and point your browser to http://localhost:8000/,

A seed command is being run on each start, so you can have fresh new random data to play with.

In case you are using WSL with Docker for Desktop (version 2.2.0.4) on Windows: you need to have your repository on the Windows file system rather than on the WSL one because otherwise the volume won't be mounted (solution inspired from this work around: docker/for-win#2151 (comment))

If you want to make migrations, run tests or add a dependency, you can get into the web container using:

docker-compose exec web sh
./manage makemigrations
pip install <my cool dependency>

We're using black for formatting and each push is checked against it. Running

black --line-length 120 --target-version py37

before a commit will do the trick.

Deployment

The deployment process is fully automated using AWS CodeBuild and ECS. Each time a PR is merged on master, a new docker image build is trigger and if it's successful, the staging environment will point to your latest changes.

The production environment is closely monitored by Sentry.

Feedback

  • Request a new feature on GitHub.
  • Vote for popular feature requests.
  • File a bug in GitHub Issues.
  • Email us with other feedback [email protected]

License

This project is licensed under the MPL 2.0 License - see the LICENSE file for details

About Code4Ro

Started in 2016, Code for Romania is a civic tech NGO, official member of the Code for All network. We have a community of over 500 volunteers (developers, ux/ui, communications, data scientists, graphic designers, devops, it security and more) who work pro-bono for developing digital solutions to solve social problems. #techforsocialgood. If you want to learn more details about our projects visit our site or if you want to talk to one of our staff members, please e-mail us at [email protected].

Last, but not least, we rely on donations to ensure the infrastructure, logistics and management of our community that is widely spread across 11 timezones, coding for social change to make Romania and the world a better place. If you want to support us, you can do it here.

covid-19-ro-help's People

Contributors

acis avatar adriangabrieloros avatar alecsgherghel avatar alex-muntean avatar alexmaco avatar andrei1089 avatar andreiio avatar aniri avatar aramboi avatar catileptic avatar costibleotu avatar cristina0botez avatar dandamian avatar flopunctro avatar imgbot[bot] avatar iulianstana avatar kraftika avatar lcapatina avatar stevefai avatar vtemian avatar xeeo avatar

Stargazers

 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  avatar  avatar  avatar

covid-19-ro-help's Issues

Load NGO avatar from file

The NGO avatar is currently loaded as a link. Check whether the content is an URL or a file and load it appropriately.

[Content] About page

Create content for the About page.

The content should cover:

  • what RO Help is
  • the main use cases for this platform (asking for help as an NGO, asking for help as a citizen and directing your request to an NGO)
  • how to offer and ask for help - general guidelines (make your requests atomic and specific, create one request per resource need, and one request per city)
  • good practices for NGOs and citizens (close their own requests when they have been fulfilled, close the requests made by citizens once the NGO has fulfilled them)

[Content] Add e-mail content

Add e-mail content for the following scenarios:

  • new NGO Registration (email sent to all admins - Code4, DSU, FFC)
  • New vote for NGO (email sent to all others admins)
  • New NGO Created (email sent to NGO owner)
  • New help message (email sent to NGO owner after a volunteer submits a form)
  • New payment is confirmed (email sent to person that made the donation)
  • New donation is confirmed (email is sent to the owner of NGO)

Make this content available in RO/EN/HU.

Implement NGO reporting

As an NGO, I need to have a way to reporting my spendings in my admin page.

I need a section that allows me to fill in a form, with a date, a spending (what object / activity I have spent donated money on) and a spending amount. After I fill in a section, my reporting table gets updated.

The reporting will be visible to anyone on the platform.

Th NGO is under obligation to start adding reporting items within a month of having their account activated. If they don't, their account is marked as inactive and is no longer reachable in the platform.

Aside from adding rows to the reporting table, the NGO is also under obligation to add receipts, either scanned or pictures of those receipts, for any acquisitions they made using the money they received as donation from the platform.

These receipts are only visible for the NGO adding them and for the platform admins.

Create donations NGO accordion

UI/UX here - bottom of the page, starting with the screen titled "Pagină de organizație - bani V2".

In order to differentiate the meaning of this accordion from the other two, let's not add an icon to the left side of the accordion. Let's just add an empty space with a coloured background.

Create reporting NGO accordion

UI/UX here - bottom of the page, starting with the screen titled "Pagină de organizație - bani V2".

In order to differentiate the meaning of this accordion from the other two, let's not add an icon to the left side of the accordion. Let's just add an empty space with a coloured background.

[Content] Emails Texts

We need texts for the following emails:

  • new NGO Registration (email sent to all admins - Code4, DSU, FFC)
  • New vote for NGO (email sent to all others admins)
  • New NGO Created (email sent to NGO owner)
  • New help message (email sent to NGO owner after a volunteer submits a form)
  • New payment is confirmed (email sent to person that made the donation)
  • New donation is confirmed (email is sent to the owner of NGO)
  • An NGO is either accepted or rejected from joining the platform (2 different email bodies)

Create sidebar

Must contain links to other COVID-19 code for romania task for projects, along with a call to action button:

  • date la zi
  • știri oficiale
  • ce mă fac
  • stăm acasă
  • diaspora hub

Must contain a search bar that can search through the NGOs registered on the platform and the aid type keywords.

Create new NGO page for the need form

We've discovered that, when a user clicks the "Donate" button on an NGO page, the form that appears below pushes the other needs outside of the need accordion. This is due to how Bulma implemented the accordion element.

Instead, we will create a new NGO page. When a user clicks "Donate", they are taken to a NGO page that contains the same elements up until the NGO description (including this). The three "needs" accordions disappear and are replaced by the need that the user interacted with.

So, below the NGO description, the user will see the Need title, the description, and then the donation form.

This will be true for all needs except the one in which the NGO asks for money via a bank transfer. This is because that's the only need that doesn't require a "donate" button.

Apply city and county filter differently per aid type

For "money" aid type, the city and county filters will apply to the city and county where the NGO operates, which they have chosen when singing up (they can also edit this information in the admin panel).

For the "volunteer" and "resource" aid type, the city and county filters apply to the city and county specified in the aid request form that the NGO fills out. So that, even if an NGO has its residence in city A, it can put out a volunteer request for city B. The city and county filters will filter where the NGO needs the resources or volunteers, not where the NGO is from.

Add reCaptcha

Add an additional reCaptcha step to any flow that involves filling out a publicly-accessible form.

Thus far, this means:

  • the form an NGO fills out to request an account on the platform
  • the form a visitor fills out to send a message to an NGO, based on a need

Send mail to new NGO owner after approval

After an admin is approving a new NGO, we should send an email to owner.

  • Create NGO model with data from RegisterNGORequest
  • send email to owner
  • create unique token for password setting
  • set password
  • invalidate token
  • redirect to login

Create footer

Must contain:

  • link to terms and conditions page
  • link to confidentiality policy page
  • link to code of conduct page
  • link to code4.ro website
  • link to contact us page
  • social media buttons
  • logo & organisation details
  • additional footer item that specifies that this project was created as part of the Code for Romania Task Force

Screenshot 2020-03-13 at 22 49 09

Add reporting functionality to NGO admin

As an NGO, I want to:

  • have a place in my admin panel where I can see my own reporting
  • have the ability to add /edit / delete a row in the reporting table
  • have the ability to upload my receipts
  • have the ability to see the receipts that I've already uploaded

The reporting table has the following header:
Date | Items | Value

Populate /ngos/ with NGO needs

The NGO page should be filled with NGO needs, sorted by urgency.

This is a NGO need visual for desktop:
telegram-cloud-photo-size-4-6030540916227420673-y
This is a NGO need visual for mobile:
telegram-cloud-photo-size-4-6030540916227420674-x

The information present in teach need is:

  • the type (as an icon, as per the need type icons in the NGO detail view, resource/volunteer/money)
  • the NGO name
  • the NGO avatar
  • the type title
  • the type tags
  • the donate buttom

Clicking Donate takes you to the need present on the NGO page

Allow visitors to donate money anonymously or using their real name

Under the "First name" and "last name" fields in the donation form, add a checkbox saying "Vreau ca donația mea să apară pe platforma RoHelp". Along with the number of donations and total amount donated, a user can also view the names of those who chose to donate publicly.

NGO Sign-up form

Must contain

  • NGO Name
  • Owner Name
  • E-mail address
  • City
  • County
  • Avatar (optional)
  • Link to website / FB page
  • Description (free-form)
  • Description of past actions, with empahsis on COVID-19 related actions (free-form)
  • The types of resources they anticipate they will need (free-form)

The form must make it mandatory for the NGO to upload two files:

  • The first page of their last spending reporting
  • A scan of their association status (statutul asociației)

Create navigation bar

Must contain:

  • about page
  • donate aid page
  • logo
  • additional header item that specifies that this is a code for romania project developed in partnership with the romanian government

Screenshot 2020-03-13 at 22 52 17

Add County and City to NGO model and apply filtering

  • Add county and city to the NGO Model.
  • Add county and city to the NGO aid request form.
  • The County and City search filters apply to the NGO need if the need type is resources or volunteer.
  • The County and City search filters apply to the NGO itself if the need type is money

"Reset filters" button

As a user, I want a button that will reset the County and City filters, but will keep the Resource filter.

Add city and county to NGO sign-up form

Add the following fields to the form that an NGO fills out to request an account on the platform: city and county. This will enable the NGO to appear in Donation searches immediately after registering.

Create NGO admin panel

As an NGO, I want to be able to:

  • create / edit /delete my own data
  • create / edit / mark as completed a request for aid
  • delete a request for aid (should be marked as "unsafe" to discourage them from deleting completed requests)
  • read / mark as read / mark as unread aid messages from citizens

Implement volunteer needs accordion in NGO page

The volunteer need section is identical to the resource need section in form. Each need is a separate request for a certain type of volunteer.

When a user clicks "donate", they are shown a form, just like in the case of a resource need. They fill the form out and the contents of the form are sent as a message to the NGO.

Implement search bar

The search bar will search through:

  • pre-defined platform-wide tags
  • words in the description of the "need" that each NGO has posted
  • NGO name

When a user enters a term in the search bar and hits ENTER / clicks the search button, the left-side view will change to display a preview of the needs that matched the search either by tag or by text. Clicking a need will take the user to the NGO page with the accordion expanded to expose that certain need. When this left-side search view is active, the county and city filters are also displayed and the search results can be filtered by county and by city.

Update filters

The City and County filters should change their text from "city" or "county" to the values which has been selected from the drop-down menu after a selection is made. This is meant to visually inform the user that the filter is active.

Add Red Cross banner

Above the "aid" type filters there should be a banner urging people to donate to the Red Cross. UI pending.

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.