Conservancy's Improvements and changes to the Houdini project. These are generally upstreamed but some items are Conservancy-specific, particularly some items in the docs/ directory on the conservancy/current branch.
Find a file
Bradley M. Kuhn fc77ee76d6 Relicense Javascript code in accordance with project's new license
The primary license of the project is changing to:
  AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later

The Additional Permission is designed to permit publicly distributed
Javascript code to be relicensed under LGPL-3.0-or-later, but not server-side
Javascript code.  As such, we've relicensed here static Javscript files under
LGPL-3.0-or-later, and those that run as part of build and/or server side
under AGPL-3.0-or-later.

Note that in future, Javascript files may be updated to be stronger copyleft
license with the Additional Permission, particularly if they adapted to run
on server side and/or turned into templates.  Of course, we'd seek public
discussion with the contributor community about such changes.

This commit is one of the many steps to relicense the entire codebase.

Documentation granting permission for this relicensing (from all past
contributors who hold copyrights) is on file with Software Freedom
Conservancy, Inc.
2018-03-25 15:10:40 -04:00
app Relicense all .css files as LGPL-3.0-or-later 2018-03-25 15:10:40 -04:00
client Relicense Javascript code in accordance with project's new license 2018-03-25 15:10:40 -04:00
config Relicense all .yml files as CC-1.0 2018-03-25 15:10:40 -04:00
db Relicense all .rb files under new project license. 2018-03-25 15:10:40 -04:00
lib Relicense all .erb files under new project license. 2018-03-25 15:10:40 -04:00
public Relicense all .css files as LGPL-3.0-or-later 2018-03-25 15:10:40 -04:00
script Initial commit. Previous history maintained by CommitChange 2018-03-25 13:30:42 -04:00
spec Relicense Javascript code in accordance with project's new license 2018-03-25 15:10:40 -04:00
.babelrc Initial commit. Previous history maintained by CommitChange 2018-03-25 13:30:42 -04:00
.buildpacks Initial commit. Previous history maintained by CommitChange 2018-03-25 13:30:42 -04:00
.dockerignore Initial commit. Previous history maintained by CommitChange 2018-03-25 13:30:42 -04:00
.env.template Initial commit. Previous history maintained by CommitChange 2018-03-25 13:30:42 -04:00
.eslintrc.js Relicense Javascript code in accordance with project's new license 2018-03-25 15:10:40 -04:00
.gitignore Initial commit. Previous history maintained by CommitChange 2018-03-25 13:30:42 -04:00
.jshintrc Initial commit. Previous history maintained by CommitChange 2018-03-25 13:30:42 -04:00
.rspec Initial commit. Previous history maintained by CommitChange 2018-03-25 13:30:42 -04:00
.ruby-version Initial commit. Previous history maintained by CommitChange 2018-03-25 13:30:42 -04:00
CC0-1.0.txt Creative Commons 0 1.0 Universal (CC0 1.0), Public Domain Dedication, as downloaded from: http://creativecommons.org/publicdomain/zero/1.0/legalcode.txt 2018-03-25 15:10:39 -04:00
CODE_OF_CONDUCT.md Initial commit. Previous history maintained by CommitChange 2018-03-25 13:30:42 -04:00
config.ru Initial commit. Previous history maintained by CommitChange 2018-03-25 13:30:42 -04:00
docker-compose.yml Relicense all .yml files as CC-1.0 2018-03-25 15:10:40 -04:00
Dockerfile Initial commit. Previous history maintained by CommitChange 2018-03-25 13:30:42 -04:00
Gemfile Initial commit. Previous history maintained by CommitChange 2018-03-25 13:30:42 -04:00
Gemfile.lock Initial commit. Previous history maintained by CommitChange 2018-03-25 13:30:42 -04:00
package-lock.json Initial commit. Previous history maintained by CommitChange 2018-03-25 13:30:42 -04:00
package.json Initial commit. Previous history maintained by CommitChange 2018-03-25 13:30:42 -04:00
postcss.config.js Relicense Javascript code in accordance with project's new license 2018-03-25 15:10:40 -04:00
Procfile Initial commit. Previous history maintained by CommitChange 2018-03-25 13:30:42 -04:00
Rakefile Initial commit. Previous history maintained by CommitChange 2018-03-25 13:30:42 -04:00
README.md Update Get Involved section of README.md 2018-03-25 14:00:16 -04:00
webpack.common.js Relicense Javascript code in accordance with project's new license 2018-03-25 15:10:40 -04:00
webpack.debug.js Relicense Javascript code in accordance with project's new license 2018-03-25 15:10:40 -04:00
webpack.production.js Relicense Javascript code in accordance with project's new license 2018-03-25 15:10:40 -04:00

The Houdini Project is free and open source fundraising infrastructure. It includes...

  • Crowdfunding campaigns
  • Donate widget page and generator
  • Fundraising events
  • Nonprofit Profiles
  • Nonprofit payment history and payouts dashboard
  • Nonprofit recurring donation management dashboard
  • Nonprofit metrics overview / business intelligence dashboard
  • Nonprofit supporter relationship management dashboard (CRM)
  • Nonprofit org user account management
  • Simple donation management for donors

This is a Rails 3.2 app; we are not opposed to upgrading.

Much of the business logic is in /lib.

The frontend is written in a few custom frameworks, the largest of which is called Flimflam. We endeavor to migrate to React as quickly as possible to increase development comfort and speed.

All backend code and React components should be TDD.

Get involved

Houdini's success depends on you!

Join our Zulip chat

https://houdini.zulipchat.com

Help with translations

Visit the Internationalization channel on Houdini Zulip and discuss

Dev Setup

Get the code

git clone https://github.com/HoudiniProject/houdini

Docker install (if you don't have docker and docker-compose installed)

install Docker and Docker compose

You need to install Docker and Docker Compose.

  • Note: Docker and Docker Compose binaries from Docker itself are proprietary software based entirely upon free software. If you feel more comfortable, you may build them from source.

  • Note 2: For Debian, the Docker package is simply too out of date to be usable. Even the version for latest Ubuntu LTS is too old. For reliability, we strongly recommend using the Docker debian feed from docker itself OR making sure you keep your own build up to date.

Add yourself to the docker group

Adding yourself as a Docker group user as follows:

sudo usermod -aG docker $USER

You will likely need to logout and log back in again.

Build your docker-container and start it up for initial set up.

We'll keep this running in the console we'll call console 1

docker-compose build
docker-compose up

System configuration

There are a number of steps for configuring your Houdini instance for startup

Start a new console we'll call console 2.
In console 2, copy the env template to your .env file
cp .env.template .env
In console 2, run the following and copy the output to you .env file to set you DEVISE_SECRET_KEY environment variable.

docker-compose run web rake secret # copy this result into your DEVISE_SECRET_KEY

In console 2, , run the following and copy the output to you .env file to set you SECRET_TOKEN environment variable.
docker-compose run web rake secret # copy this result into your SECRET_TOKEN
Set the following secrets in your .env file with your Stripe account information
  • STRIPE_API_KEY with your Stripe PRIVATE key
  • STRIPE_API_PUBLIC with your Stripe PUBLIC key

If you don't file uploads WILL NOT WORK but it's not required.

In console 2, install npm packages

docker-compose run web npm install

In console 2, fill the db

docker-compose run web rake db:create db:structure:load db:seed test:prepare

Set up mailer info

You can set this in config/default_organization.yml or better yet, make a copy with your own org name and add that to your .env file as ORG_NAME If you need help setting up your mailer, visit config/environment.rb where the settings schema is verified and documented.

Startup

Switch back to console 1 and run Ctrl-c to end the session.
In console 1, restart the containers

docker-compose up

In console 2, run:

docker-compose run web npm run watch

You can go to http://localhost:5000

To get started, register your nonprofit using the "Get Started" link.

Additional info

Super admin

There is a way to set your user as a super_admin. This role lets you access any of the nonprofits on your Houdini instance. Additionally, it gives you access to the super admin control panel to search all supporters and nonprofits, which is located at /admin url.

To create the super user, go to the rails console by calling:

docker-compose run web rails console

In the console, run the following:

admin=User.find(1) #or the id of the user you want to add the role
role=Role.create(user:admin,name: "super_admin")

To run in production

Docker

While Docker should be very possible to use for production, the current Docker solution is optimized heavily for dev purposes. If you know more about creating a solid production Docker setup, please do contribute!

(To be continued)

  • rake assets:precompile
  • if production: make sure memcached is running.

Frontend

Assets get compiled from /client to /public/client

Style

Ruby

  • 2 spaces for tabs

New frontend code

  • All new front end code should be written in Typescript and React (using TSX files)

Legacy Javascript

  • 2 spaces for tabs
  • Comma-led lines
  • ES6 imports

Git

  • No need to rebase, just merge