- tax form #230 made easy
- digital solution for an offline process
- as simple and as efficient as possible
- helps you compare and choose who to support
- helps NGOs reach their public and keep track of their supporters
HELPING SHOULD BE SIMPLE - Every year people can redirect 2% of their income tax to a worthy cause. However, most of them never do it, being put off by two hurdles: the bureaucratic process and the lack of information on NGOs they could help.
Moreover, NGOs themselves have a hard time getting their message across to as many people as possible.
The website will have information on a variety of NGOs that can be supported by redirecting 2% of the income tax. It will also be a means for NGOs to showcase their projects to a wider audience and convince them to re-direct the 2% to them.
Direct contact between the two will not be necessary anymore, which means saving time and resources for both and more #230 tax forms submitted.
SUPPORT A WORTHY CAUSE FOR FREE IN 5 EASY STEPS
- browse and choose the NGO you want to redirect 2% of your income tax to
- fill in tax form #230 online
- print the filled in form
- sign the form
- mail the form to your ANAF agency
Contributing | Built with | Repos and projects | Deployment | Feedback | License | About Code4Ro
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.
Python27
Google App Engine
Bower
Google Cloud Datastore
The entry point of the app is main.py
. Here is where all the routes are defined.
The main folders are:
controllers
contains the handlers for each routemodels
has thendb
Models and some helpers:create_pdf
the logic for creating the pdfemail
a small wrapper over SendGridhandlers
wrappers overwebapp2.RequestHandler
, they add some functionality. New handlers should inherit fromBaseHandler
orAccountHandler
.storage
containsCloudStorage
which helps with uploading the PDFs to google cloud
static
all the static files: css, js, imagesviews
all the html file + email templates. New html pages should extendbase.html
New handlers should extend BaseHandler
from models.handlers
. The path to the html file should be set as template_name
. The app looks in the views
folder for it.
To send props to the view, use the dict self.template_values
.
On the get
method, self.render()
should be called at the end.
- Install Google App Engine Python SDK. Details here aici
- Clone the repo:
git clone https://github.com/code4romania/redirectioneaza
- Install the requirements in the
lib
folder (not globally):pip install -r requirements.txt -t ./lib
bower install
- Rename
app.yaml.example
toapp.yaml
- To run the dev server you need to know the path to the App Engine SDK and be in the app's folder:
[path_to_sdk]/dev_appserver.py ./app.yaml --datastore_path=./datastore.db --enable_console
Read more about the Local Development Server here. Locally, App Engine has an interface for the DB found here (the server needs to be running).
To deploy the app from the command line, run:
gcloud app deploy --no-promote ./app.yaml --version [version]
version
must be the new version of the app
Google offers some generous free quota for App engine apps so you can create you own app engine app here and deploy it there. You need a google account (gmail, etc.)
When adding new ndb
Models with indexed properties, they will be automatically added in the local file named index.yaml
. That file needs to be deployed every time it changes. To do that, run:
gcloud app deploy ./index.yaml
The app uses LESS
. To compile the CSS, run:
cd ./static/
lessc css/main.less > css/main.css --clean-css="--s1 --advanced --compatibility=ie8"
To deploy the new cron jobs you need to uncomment the application
in app.yaml and change it to your app's name (this is used only in this case)
[path_to_sdk]/appcfg.py update_cron ./
When you start if you might want to add some ngos. Go to the sdk's Console and run:
from models.models import NgoEntity
ngo = NgoEntity(
logo= "https://code4.ro/wp-content/uploads/2016/06/fb.png",
name= "Nume asociatie",
description= "O descriere",
id= "nume-asociatie", # this needs to be unique. Also used as the ngo's URL
account = "RO33BTRL3342234vvf2234234234XX",
cif = "3333223",
address = "Str. Ion Ionescu, nr 33"
)
ngo.put()
You can also add ngos from the admin.
You can read more about the frameworks used by the app: webapp2 jinja2
- Request a new feature on GitHub.
- Vote for popular feature requests.
- File a bug in GitHub Issues.
- Email us with other feedback [email protected]
This project is licensed under the MPL 2.0 License - see the LICENSE file for details
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 accross 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.