const express = require('express') const path = require('path') require('dotenv').config() let DEBUG if (process.env.DEBUG || process.env.CROWDFUNDING_SITE_DEBUG) { DEBUG = true } else { DEBUG = false } if (DEBUG) console.log('Starting website in debug mode') // set up knex (for database) const knex = require('knex')({ client:'sqlite3', connection:{ filename:'./donors.sqlite' }, useNullAsDefault: true }) knex.schema.hasTable('pledges').then(function(exists) { if (!exists) { if (DEBUG) console.debug('No table exists! Creating one now...') return knex.schema.createTable('pledges', function(t) { t.increments('id').primary() t.timestamp('created_at').defaultTo(knex.fn.now()).notNullable() t.boolean('was_robot').defaultTo(true) t.integer('amount').notNullable() t.string('name', 128) t.boolean('anonymous') t.string('email', 128) t.string('phone', 32) t.integer('retry_times').defaultTo(10) t.boolean('get_newsletter').defaultTo(false) t.text('other_message') }) } }) // set up bookshelf (for easy interface for database) bookshelf = require('bookshelf')(knex) const Pledge = bookshelf.model('Pledge', { tableName: 'pledges', }) // decide base url and port for app (can be configured) const baseUrl = process.env.CROWDFUNDING_SITE_BASE_URL || '/' const port = process.env.CROWDFUNDING_SITE_PORT || 5000 // set up express const app = express() const router = express.Router() app.use(baseUrl, router) app.use(express.static('dist')) // main views router.get('/', (req, res) => { if (DEBUG) console.debug('Returning home page') res.sendFile(path.resolve(__dirname, '..', 'dist', 'index.html')) }) // start the listener! app.listen(port, () => { console.log(`Server is up at port ${port}`) }) // end note: in case we want to import this somewhere for testing module.exports = { knex, bookshelf, Pledge, router, }