Coder Social home page Coder Social logo

andefred / sparkle Goto Github PK

View Code? Open in Web Editor NEW

This project forked from sparkletown/sparkle

0.0 0.0 0.0 74.23 MB

Sparkle Online Event Platform

License: GNU General Public License v3.0

HTML 0.18% JavaScript 41.40% CSS 9.72% Python 2.01% TypeScript 46.61% Shell 0.08%

sparkle's Introduction

Sparkle: SparkleTown Platform

Codebase for SparkleTown, brought to you by Sparkle.

Getting started

Frontend

git clone ...
cd co-reality-map
npm i
npm run init # Initialize secrets files with default values
npm test
npm start
npm run build

Firebase functions

cd functions
npm install
firebase login
firebase use staging
firebase functions:config:get

Copy the output of this command and paste it in functions/.runtimeconfig.json. Then, launch the server with:

firebase emulators:start --only functions

Stripe

First, you need to install the Stripe CLI. Make sure that you have a Stripe account with the right credentials. Contact [email protected] if you don't.

brew install stripe/stripe-cli/stripe
stripe login
stripe listen --forward-to http://localhost:5001/co-reality-staging/us-central1/payment-webhooks

You should see

> Ready! Your webhook signing secret is {YOUR_LOCAL_SIGNING_SECRET_KEY} (^C to quit)

Copy this value and add it to the file functions/secrets.js.

// functions/secrets.js
...
const STRIPE_ENDPOINT_KEY = `${YOUR_LOCAL_SIGNING_SECRET_KEY}`;

Git flow

To contribute to the code base, please follow these steps:

  • create a branch from staging
  • code
  • create a pull request on staging

Then, to deploy functionalities to production, merge staging into master.

When adding a quick fix to production:

  • create a branch from master
  • code
  • create a pull request on master
  • create a branch from staging
  • cherry-pick the commit
  • create a pull request on staging

Deploying

tl;dr:

npm i -g firebase-tools # only need this once
firebase login # only need this once
npm run build && firebase deploy

You can do a faster deploy by deploying just hosting:

npm run build && firebase deploy --only hosting

NOTE: You may get a warning about deleting the function checkAdminPassword; this is a function from co-reality-admin and will be folded into this repo in future. In the meantime please don't delete this function.

Uploading config for an event

src/config.js has the ID of the Firestore document containing the party configuration. For example, if it's "co-reality-5", the Firestore document with the party config is IDed by config/co-reality-5.

To upload a new config, use scripts/upload.sh:

$ scripts/upload.sh co-reality-5 [email protected] password

This will upload the JSON object exported from configs/co-reality-5.js to the Firestore document config/co-reality-5.

Watching for changes:

$ brew install fswatch
$ VENUE=co-reality-5; fswatch -o configs/${VENUE}.js | xargs -n1 -I{} ./scripts/upload.sh ${VENUE} [email protected] password

Automatic upload of map changes

You can use a quick shell script while editing the map, to speed up the process of seeing your changes on the map:

  • Edit scripts/config-upload.js to replace the code that prompts for username and password, with the username and password you would type:
read(username)
read(password)

becomes:

//read(username)
//read(password)
const username = '[email protected]`
const password = 'password'
  • Run the automatic upload script:
$ CONFIG=co-reality-6; fswatch -o configs/${CONFIG}.js| xargs -n1 -I{} ./scripts/upload.sh ${CONFIG}
  • Be careful not to commit or push your script change, since it contains your password!

Obtaining email addresses from firebase

WARNING: Only email people with consent. Permission based marketing is the best way to grow your email list.

$ firebase auth:export --project co-reality-map auth.json
$ jq '.users[] | "\(.createdAt) \(.email)"' auth.json|awk '$2!="null\"" {print $0}'|sed -e 's/^"//' -e 's/"$//'|awk '{print $1"\t"$2}'|pbcopy

Paste into a google sheet. Leftmost column is the UNIX timestamp of the account creation. This can be converted easily:

  1. Create a new column to the right of the timestamp
  2. Use the formula: =A4/86400000 + DATE(1970,1,1)
  3. Fill down to get all values
  4. Sort by timestamp or the calculated, human date
  5. Consider not adding any with a "+"
  6. Be mindful this is PII (personally identifiable information) so we should handle it carefully and treat it as sensitive. It may be subject to the GDPR data privacy requirements in the EU and the CCPA privacy laws in California.
  7. Share the google sheet, ready to import the users into our other email lists.
  8. Email the new folks, welcome them, and say thanks for coming to the party!

sparkle's People

Contributors

antoineeudes avatar chungbios avatar denisdimitrov avatar dependabot[bot] avatar dibat avatar mathieud avatar maxb94 avatar sintinilorenzo avatar thecadams avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.