Soup to Nuts: UX & Tech to Use
Funding Cancer Research & Building Community
Choosing the right goals and tools
You have 10 seconds before the next text is revealed
Suggest event goals...
Suggest UX considerations
Fun and learning with new-to-me tech
Material-UI
const featuredPatternMap = {
// 1 is first item
small: [1, 6, 13, 18, 25, 30, 37],
medium: [1, 7, 11, 17, 21, 27, 31, 37]
}
ducks: https://medium.com/@scbarrus/the-ducks-file-structure-for-redux-d63c41b7035c#.5vbw1a62k
++++++++++++++++++++++
# make EC2 run indefinitely
npm install supervisor -g
http://josephralph.co.uk/supervisor-monitoring-and-running-commands/
<!-- pmc-auction/server/pmc-auction-supervisor.conf
[program:pmc-auction-supervisor]
directory=/var/www/html/pmc-auction
command=npm run prod
autostart=true
autorestart=true
stderr_logfile=/var/log/pmc-auction.err.log -->
`supervisor server` //what's run by npm start
adjusted timeout on ec2?
http://stackoverflow.com/questions/7210011/amazon-ec2-ssh-timeout-due-inactivity
#pm2 for no hangup
https://www.npmjs.com/package/pm2
++++++++++++++++++++++
##EC2
git fetch
git pull
git checkout master
npm install
npm run build
pm2 start server // pm2 stop all
// even after all that, something with firebase login didn't work on aws
#FIREBASE
[https://www.firebase.com/docs/hosting/guide/deploying.html]
npm run build
firebase deploy
Amazon EC2
Firebase
Secure MT/DB with Websockets
// FIREBASE ADAPTER - CREATE CONNECTION
let ref = new Firebase("https://pmc-auction.firebaseio.com"),
auctionsRef = ref.child("auctions"),
usersRef = ref.child("users"),
configRef = ref.child("CONFIG");
// FIREBASE ADAPTER - CREATE CONNECTION
let config = {
apiKey: "donttrytoreadmysecretkey",
authDomain: "auction-demo.firebaseapp.com",
databaseURL: "https://auction-demo.firebaseio.com",
storageBucket: "",
};
let firebaseRef = firebase.initializeApp(config),
db = firebaseRef.database();
let provider = new firebase.auth.GoogleAuthProvider();
// view email address
provider.addScope('https://www.googleapis.com/auth/userinfo.email');
let auctionsRef = db.ref("auctions"),
usersRef = db.ref("users"),
configRef = db.ref("CONFIG");
// FIREBASE ADAPTER - HOOK UP TO SOCKET
loadAuctions (callback) {
auctionsRef.on("child_added", (snapshot) => {
let auction = snapshot.val();
auction.id = snapshot.key();
callback(auction);
});
},
updateAuctions (callback) {
auctionsRef.on("child_changed", (snapshot) => {
let auction = snapshot.val();
auction.id = snapshot.key();
callback(auction);
});
},
// COMPONENT USAGE
function mapStateToProps (state) {
// ... truncated for brevity
return {
// app-level, static
config: state.login.config,
user: state.login.user,
// item-level, static
data: data,
// ... truncated for brevity
};
}
export default connect(mapStateToProps)(AuctionItemDetail);
Legacy
New
User- and Fundraising-Centric UX
Tallying the Results
http://static4.businessinsider.com/image/5794f92b4321f16c018ba7fb-2000/chris%20froome%20wins%202016%20tour%20de%20france.jpg
PMC has raised over $500M over 36 years. $45M in 2015 alone.