Skip to content
Podsheets is a set of open source tools for podcast hosting, ad management, community engagement, and more.
Branch: master
Clone or download
Latest commit 580e0c5 Apr 15, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
frontend first commit Apr 14, 2019
server Update mail.ts lib Apr 15, 2019
.gitignore first commit Apr 14, 2019
Dockerfile first commit Apr 14, 2019
app.json first commit Apr 14, 2019
docker-compose.yaml first commit Apr 14, 2019
package.json first commit Apr 14, 2019 Update Apr 14, 2019
tslint.json first commit Apr 14, 2019
yarn.lock first commit Apr 14, 2019


Open source tools for podcast hosting, ad management, community engagement, and more.

Join our FindCollabs to find out how to contribute to Podsheets.

Quick Setup

docker build -t podsheet . docker-compose up


  • Install Node.js v6.10.2 LTS

  • Install Yarn

  • Install Mongodb 3.4.4

  • Install nodemon

  • Install webpack

Copy the file ./server/.env.sample to ./server/.env and edit the file with your credentials:

cp ./server/.env.sample ./server/.env

This credentials include the mongo url, and facebook and google api's secrets. For facebook and google api service, you have to create apps and turn on their authentication api's, there you can get the secret credentials needed. Note: Both google and facebook authentication apis will ask to set the hostname of the app at their UI, so if you are running it locally, you can add a hostname like to redirect to localhost.

Alternative to lvh url

Run this command:

nano /etc/hosts

add this entry at the end: podsheets.local

Then do: ctrl X

Indicate you'd like to save the change then press Enter. Use this url for the application settings in FB and Google: http://podsheets.local:3001

Port 3000 is when running in dev mode, port 3001 is running in the mode it runs in Heroku.

After this is done, run:

yarn build

Development workflow:

For development workflow, we need to run two consoles simultaneously:

For frontend, we we use webpack dev server to bundle and hot reload the application, open a new console and run:

cd ./frontend && yarn dev

For backend, we use nodemon and tsc to watch and transpile the typescript files, open a new console and run:

cd ./server && yarn dev

The webpack dev server will be available at http://localhost:3000

NOTE: This develpment configuration makes webpack server running at port 3000 and the backend server at port 3001, webpack will automatically proxy all server requests to the server port.

Build for production:

yarn build

This will build frontend and server, and copy the assets from the frontend to the server.

To start the prod build server:

yarn start

The server will be available at http://localhost:3001 (or the port configured at .env)

Setting up the google cloud storage service

Go to the google cloud console >> Google Cloud Storage JSON API >> Credentials. There you create a new service account with access to writting to the storage. After that you can download the credentials json file. From that file you can copy and paste the credentials to .env.

Then you can create a new bucket for the storage and set the permissions to public read, so users can download the files.

gsutil defacl set public-read gs://podsheets-qa

# Alternative method to set all to read access:
# gsutil defacl ch -u allUsers:R gs://podsheets-qa

Deploying to Heroku:

You need to install heroku cli on your local machine. Then from the root of this repo type:

heoku login

And enter your credentials, then link the repo with the heroku repo (where podsheetsqa is the name of the heroku app)

heroku git:remote -a podsheetsqa

Then you can commit the changes with:

 git push heroku master

NOTE: At the moment we have to commit the bundled files at ./server/public to the github repo. This is because heroku complains of a build time longer than 60 seconds. So before sending a new build to heroku, make sure you first run yarn build and commit the changes inside ./server/public.

Configuring Transaction email:

Any transaction email service can be used which supports SMTP credentials. The following assumes that mailgun is used:

  1. Log In / Create a mailgun account.
  2. In the dashboard scroll down to Sending Domains or Sandbox Domains
  3. Either create a Sending Domain or open an existing Sending/Sandbox domain
  4. After opening the domain, note its Domain Information (SMTP Hostname, Default SMTP Login, Default Password)
  5. Go to Heroku and open the desired app -> settings -> Reveal Config Vars
  6. Fill SMTP_HOST, SMTP_PASSWORD, SMTP_USER with the corresponding mailgun SMTP credentials (SMTP Hostname, Default Password, Default SMTP Login)
  7. Now the Heroku app will use the new SMTP credentials to send transaction emails

Configuring Stripe:

  1. Log In / Create a Stripe account
  2. Go to API section
  3. Copy Publishable and Secret keys
  4. Go to Heroku and open the desired app -> settings -> Reveal Config Vars
  5. Fill STRIPE_PUBLISHABLE_KEY, STRIPE_SECRET_KEY with the corresponding Stripe keys which were noted earlier (Publishable and Secret)
  6. Now the Heroku app will use the new Stripe credentials to process payments

To test both SMTP and Stripe configurations all steps are the same, but instead of editing Heroku config vars modify the local .env file in your project server directory.

You can’t perform that action at this time.