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
2020-05-01 15:40:21 -05:00
app Correct pack load typo in app/views/campaigns/supporters/index.html.erb 2020-04-23 14:54:20 -05:00
bin Modify bin so it uses our generators over rails 2020-05-01 14:30:49 -05:00
client client fix 2020-04-23 14:09:14 -05:00
config Add support for using the webpack-dev-server 2020-04-23 14:09:58 -05:00
db Remove v1 migrations 2020-04-30 15:47:08 -05:00
docker Removal of the codegen 2020-04-23 14:09:58 -05:00
docs Convert to yarn 2019-11-05 15:51:46 -06:00
gems Correct some issues in the Gemspec 2020-05-01 15:40:21 -05:00
javascripts Update snapshots 2020-04-23 16:57:29 -05:00
lib Add factory_bot templates 2020-05-01 14:34:07 -05:00
public Move widget css into a controller so it's updateable 2020-04-23 14:09:56 -05:00
script Removal of the codegen 2020-04-23 14:09:58 -05:00
spec Add api/nonprofits#create 2020-04-21 13:47:49 -05:00
types Remove Velocity 2020-04-23 14:06:30 -05:00
.bootstraprc Everything works except fonts 2020-04-23 14:09:56 -05:00
.browserslistrc Add webpacker 2020-04-23 13:44:17 -05:00
.buildpacks Initial commit. Previous history maintained by CommitChange 2018-03-25 13:30:42 -04:00
.dockerignore Include qx into the repo 2019-01-09 17:57:35 -06:00
.env.template Initial commit. Previous history maintained by CommitChange 2018-03-25 13:30:42 -04:00
.env.test Working .travis.yml 2018-11-12 16:46:17 -06:00
.eslintrc.js Relicense Javascript code in accordance with project's new license 2018-03-25 15:10:40 -04:00
.gitignore Removal of the codegen 2020-04-23 14:09:58 -05:00
.jshintrc Initial commit. Previous history maintained by CommitChange 2018-03-25 13:30:42 -04:00
.nvmrc Add .nvmrc so nvm just works 2019-11-27 16:15:27 -06:00
.rspec Add the rails helper to .rspec 2019-11-08 16:13:03 -06:00
.rspec_parallel Add support for parallel_tests 2020-04-16 14:17:57 -05:00
.ruby-gemset dev: add .ruby-gemset and fix dependencies issues 2019-08-02 12:49:24 -05:00
.ruby-version Update to Ruby 2.6.6 2020-04-16 13:50:52 -05:00
.travis.yml Working .travis.yml 2018-11-12 16:46:17 -06:00
AGPL-3.0.txt AGPLv3, as downloaded from https://www.gnu.org/licenses/agpl-3.0.txt 2018-03-25 15:10:40 -04:00
babel.config.js Add webpacker 2020-04-23 13:44:17 -05: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 style(format): run rubocop format autocorrect 2019-08-02 19:07:29 +02:00
dc fix docker name so it works consistently 2019-03-06 08:58:20 -05:00
Gemfile Add factory_bot to dev so generators work 2020-05-01 14:29:55 -05:00
Gemfile.lock Update webpacker to 5.0.1 2020-04-23 14:09:58 -05:00
GPL-3.0.txt GPLv3, as downloaded from https://www.gnu.org/licenses/gpl-3.0.txt 2018-03-25 15:46:42 -04:00
LGPL-3.0.txt LGPLv3, as downloaded from https://www.gnu.org/licenses/lgpl-3.0.txt 2018-03-25 15:46:42 -04:00
LICENSE Fix typo of word Houdini in LICENSE file 2018-05-29 15:22:02 -05:00
package.json Remove unused less and less-loader 2020-04-23 16:59:15 -05:00
postcss.config.js WIP 2020-04-23 14:09:14 -05:00
Procfile Remove unneeded job worker for procfile 2019-11-14 14:23:37 -06:00
Rakefile style(format): run rubocop format autocorrect 2019-08-02 19:07:29 +02:00
README.md Add database creation explanation 2020-04-30 16:18:44 -05:00
run Improve docker-compose setup 2019-01-17 11:50:55 -06:00
setupTests.js Support for grape and onboarding via react 2018-05-22 13:33:35 -05:00
tsconfig.jest.json Support for grape and onboarding via react 2018-05-22 13:33:35 -05:00
tsconfig.json Support for grape and onboarding via react 2018-05-22 13:33:35 -05:00
tslint.json Add a tslint config 2019-02-14 14:25:22 -06:00
Web-Template-Output-Additional-Permission.txt Paragraph reformat only; no textual change. 2018-03-25 15:48:15 -04:00
yarn.lock Remove unused less and less-loader 2020-04-23 16:59:15 -05:00

Build Status

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

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

Create new postgres user

Run sudo -u postgres createuser houdini_user -s -P and then enter a password for the role

Docker setup

Get the code

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

Mac Setup

If you have a Mac and don't want to run the docker configuration, see how to get started with the project.

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

./dc build
./dc 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.

./run 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.
./run 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 yarn

./run yarn

In console 2, fill the db

./run 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

./dc up

In console 2, run:

./run yarn 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:

./dc 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")

Known Issues

For a list of how to solve known issues

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

React Generators

If creating new React or Typescript code, please use the Rails generators with the 'react:' prefix. This include:

react:packroot

This generator creates a new entry for Webpack. This is a place where Webpack will start when packing a new javascript output file. It also creates a corresponding component for the entry. Usually, you will have one of these per page.

react:component

This generator creates a React component along with a test file for testing with Jest. Each component should have its own file.

react:lib

This generator creates a basic Typescript module along with a test file.

Providing the complete corresponding source code

Note: This is not legal advice and provides a suggestion which may be compliant. You should talk with your legal counsel if you have questions or concerns with how to comply with the various licenses of Houdini

Providing the complete, corresponding source code (CCS) of your project is a requirement of some of the licenses used by Houdini. There are two methods for doing so right now:

  1. Providing a tarball of the current running code
  2. Providing a link to Github where the code is pulled from

The easiest method is to provide a tarball. Houdini automatically provides a link on the Terms & Privacy page which generates a tarball for the current running code at runtime. For this to work though, the following characteristics must be true:

  • Your have to have committed any changes you made to the project in HEAD in your git repository
  • The .git folder for your repository must be a direct subfolder of your $RAILS_ROOT
  • Your web server must be able to run git archive.

Style

Ruby

  • 2 spaces for tabs

New frontend code

  • All new front end code should be written in Typescript and React (using TSX files). Please use the React Generators for creation.
  • 2 spaces for tabs

Legacy Javascript

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

Git

  • No need to rebase, just merge