SlideShare a Scribd company logo
How Missions.Me is Embracing Laravel.
About Me
• Lead Developer
• Full-stack PHP Developer
• From designer to developer
• Experience in SEO & CRO
• Volunteer student pastor and
world traveler.
Meet the Team The Missions.Me Staff
About Us
• Faith-based international
non-profit charity based in
Rochester, MI
• Hosted thousands of
travelers since 2004. Over 44
trips to 4 continents and
dozens of countries.
• Facilitate humanitarian aid
including water wells,
houses, rescue homes,
orphanages, shoes, and
more.
One Nation One Day
The greatest achievements
begin with audacious questions
MM Network of Sites
• dominicrusso.com
• angelhouse.me
• 1nation1day.com, shop.1nation1day.com
• lamejorrepdominicana.com
• missions.me, api.missions.me
The MM App
• Website (marketing, info)
• CMS (staff & users)
• CRM
• Crowd Fundraising Tool
• Social Network
• Web Service (API for mobile
apps - iOS, Android)
MM App Overview
• Frontend Website

Marketing, information, etc.
• User application

Mange trip reservations, projects, fundraisers, donations,
records, profile
• Admin portal

CMS, CRM
• Web Services

API for Mobile Missions app (iOS, Android)
Current Setup
• Two networked SSD VPS on Digital Ocean
managed by Forge with a MySQL database
• Laravel 4.2, and Lumen; Bootstrap 3, jQuery, Vue.js
• Beanstalkd, Google Apps for Non-profits (SMTP)
• authorize.Net API payment gateway
• MaxCDN; BugSnag; GitHub
Evolution of MM App
• Started with Codeignitor, Foundation; Shared web
hosting, FTP, and no version control!
• 3 mo. development time, 6 developers, bankrupt
our startup, launched v1.0 in the summer of 2013.
• I was hired full-time in October 2013. I rebuilt the
app by myself in one month, using Laravel 4.0.
• By Mid 2014 we’d upgraded to Larvel 4.2 and
migrated to DigitalOcean and Forge.
- Leonardo da Vinci
“Simplicity is the ultimate sophistication.”
Timezones
PROBLEMS:
- Deadlines for everything.
- International user base.
- Admins setting deadlines in EST but the server
saves and returns UTC.
Timezones
SOLUTION:
- Accessor and Mutator
methods on models.
- Carbon library to add or
subtract the necessary GMT
offsets and set the correct
timezone.
Relationships
PROBLEMS:
- Database normalization can
require a lot of extra tables.
- A user has the following
relationships: contact, profile,
timezone, shirt size, groups …
- Admin created content needs
a table. Then that content gets
manipulated by a user, so that
needs a new table; so on and
so on.
Relationships
SOLUTION: 

Eloquent Relationship Methods
- One to One
- One to Many
- Many to Many
- Polymorphic
- Many to Many Polymorphic
(Yes I’m using all of them!)
BIG Data
PROBLEMS:
- N+1,
- detailed filters and searches
- exporting, Eloquent
sometimes too slow for large
memory-intensive exports
(server time outs).
BIG Data
SOLUTIONS:
Eager loading for N+1 issue.
URI query strings with
Query Scopes in the models
allowed for thousands of
result variations.
Query builder, raw SQL
statements, and pushing
that logic to a queue job, I
was able to get the export
speed needed.
Permissions
PROBLEM:
Admins, staff, interns,
group owners, user
content management,
etc.
This requires more
than authentication.
Permissions
SOLUTION:
Created a permissions
table with boolean
attributes (more control
than user roles).
Using Laravel’s route
filters I can check a
user’s access permission
on protected routes.
Slugable
PROBLEM:
A lot of pages need
user-friendly URLs
over numerical IDs
(pages, profiles,
projects, fundraisers,
etc.)
Slugable
SOLUTION:
The power of
polymorphism!
Use a slugs table,
validation to ensure
unique slugs, a
polymorphic relationship,
and a PagesController to
lookup a slug and then
route it to it’s class type.
Security
PROBLEM:
We save a lot of sensitive
personal information.
Medical records, passport
copies, visas, etc.
We have to comply with
laws: PCI, Hippa
Security
SOLUTION:
We can encrypt using
Laravel’s Bcrypt method.
We can store and retrieve
files in a secure app/
storage outside the public
directory using Laravel’s
file class.
Time Savers
Automate “chores”
and “tedious” tasks
with custom artisan
commands.
Example: grab all
profile pics, rename,
and organize in
minutes
Scaling
Missions.Me works at a
relentless pace, is
growing rapidly, and is
a pioneer in it’s
industry.
Mobile Missions API in
just 4 weeks using
Lumen.
lamejorrepdominicana.
com - 1 week dev time
with Laravel.
Workflow
Task based rapid
prototyping
SCRUM and Agile
practices
Git-flow branching
model: Master,
Develop, Feature,
Release, Hotfix
The Future of MM
• Refactor - some code is 2 years old - lots of code smells!
• Upgrade to Laravel 5.1
• Move to distributed system managed with Envoyer - load
balancer, multi-servers, zero down time
• Adopt an API centric architecture (Lumen micro-services)
• Create a richer UI with a JavaScript framework (polymer,
vue.js)
• Offer Missions.Me as a SAAS

More Related Content

PPTX
Online Portfolio
PPTX
2 accounting for_receivables
PDF
SEO: Getting Personal
PPTX
Best Laravel Development Company In the USA
PPTX
Laravel development (Laravel History, Environment Setup & Laravel Installatio...
PDF
Reasons Why Laravel is Better Over the PHP Frameworks
PDF
Top Strategies for Effective Custom Laravel Development.pdf
PPTX
Laravel overview
Online Portfolio
2 accounting for_receivables
SEO: Getting Personal
Best Laravel Development Company In the USA
Laravel development (Laravel History, Environment Setup & Laravel Installatio...
Reasons Why Laravel is Better Over the PHP Frameworks
Top Strategies for Effective Custom Laravel Development.pdf
Laravel overview

Similar to How Missions.Me is Embracing Laravel (20)

PDF
Hidden things uncovered about laravel development
PPTX
Why you should use a web framework, eventually
PDF
Laravel Web Development: A Comprehensive Guide
PPTX
Laravel Development Company And Services
PDF
Step by Step Guide to Build the Laravel Web App.pdf
PPTX
Top 7 Reasons to Choose Laravel for Faster Web App Development.pptx
PPTX
Top 12 Advantages of Laravel Framework
PDF
Laravel -The PHP Framework that Transformed Web Development_.pdf
PDF
MidwestPHP 2016 - Adventures in Laravel 5
PDF
A Comprehensive Guide to Laravel for Web App Development
PPTX
Introduction to Laravel Framework (5.2)
PDF
Building Scalable Applications with Laravel
PDF
What's New In Laravel 5
PDF
Why Laravel is Best for Faster Web Application Development
PPTX
Why Laravel is the Best Choice for Your Next Web Development Project
PDF
Getting Started-with-Laravel
PDF
Getting started-with-laravel
PDF
Building Dynamic Web Applications with Laravel Development Services.pdf
PDF
Laravel Web Development: Tools, Tips, and Insights
PPTX
Laravel
Hidden things uncovered about laravel development
Why you should use a web framework, eventually
Laravel Web Development: A Comprehensive Guide
Laravel Development Company And Services
Step by Step Guide to Build the Laravel Web App.pdf
Top 7 Reasons to Choose Laravel for Faster Web App Development.pptx
Top 12 Advantages of Laravel Framework
Laravel -The PHP Framework that Transformed Web Development_.pdf
MidwestPHP 2016 - Adventures in Laravel 5
A Comprehensive Guide to Laravel for Web App Development
Introduction to Laravel Framework (5.2)
Building Scalable Applications with Laravel
What's New In Laravel 5
Why Laravel is Best for Faster Web Application Development
Why Laravel is the Best Choice for Your Next Web Development Project
Getting Started-with-Laravel
Getting started-with-laravel
Building Dynamic Web Applications with Laravel Development Services.pdf
Laravel Web Development: Tools, Tips, and Insights
Laravel
Ad

Recently uploaded (20)

PPTX
sap open course for s4hana steps from ECC to s4
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
A Presentation on Artificial Intelligence
PDF
Approach and Philosophy of On baking technology
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
Big Data Technologies - Introduction.pptx
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Spectral efficient network and resource selection model in 5G networks
sap open course for s4hana steps from ECC to s4
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
A Presentation on Artificial Intelligence
Approach and Philosophy of On baking technology
Review of recent advances in non-invasive hemoglobin estimation
Digital-Transformation-Roadmap-for-Companies.pptx
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Dropbox Q2 2025 Financial Results & Investor Presentation
Big Data Technologies - Introduction.pptx
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Encapsulation_ Review paper, used for researhc scholars
Reach Out and Touch Someone: Haptics and Empathic Computing
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Unlocking AI with Model Context Protocol (MCP)
NewMind AI Weekly Chronicles - August'25-Week II
Chapter 3 Spatial Domain Image Processing.pdf
Mobile App Security Testing_ A Comprehensive Guide.pdf
The AUB Centre for AI in Media Proposal.docx
Spectral efficient network and resource selection model in 5G networks
Ad

How Missions.Me is Embracing Laravel

  • 1. How Missions.Me is Embracing Laravel.
  • 2. About Me • Lead Developer • Full-stack PHP Developer • From designer to developer • Experience in SEO & CRO • Volunteer student pastor and world traveler.
  • 3. Meet the Team The Missions.Me Staff
  • 4. About Us • Faith-based international non-profit charity based in Rochester, MI • Hosted thousands of travelers since 2004. Over 44 trips to 4 continents and dozens of countries. • Facilitate humanitarian aid including water wells, houses, rescue homes, orphanages, shoes, and more.
  • 5. One Nation One Day The greatest achievements begin with audacious questions
  • 6. MM Network of Sites • dominicrusso.com • angelhouse.me • 1nation1day.com, shop.1nation1day.com • lamejorrepdominicana.com • missions.me, api.missions.me
  • 7. The MM App • Website (marketing, info) • CMS (staff & users) • CRM • Crowd Fundraising Tool • Social Network • Web Service (API for mobile apps - iOS, Android)
  • 8. MM App Overview • Frontend Website
 Marketing, information, etc. • User application
 Mange trip reservations, projects, fundraisers, donations, records, profile • Admin portal
 CMS, CRM • Web Services
 API for Mobile Missions app (iOS, Android)
  • 9. Current Setup • Two networked SSD VPS on Digital Ocean managed by Forge with a MySQL database • Laravel 4.2, and Lumen; Bootstrap 3, jQuery, Vue.js • Beanstalkd, Google Apps for Non-profits (SMTP) • authorize.Net API payment gateway • MaxCDN; BugSnag; GitHub
  • 10. Evolution of MM App • Started with Codeignitor, Foundation; Shared web hosting, FTP, and no version control! • 3 mo. development time, 6 developers, bankrupt our startup, launched v1.0 in the summer of 2013. • I was hired full-time in October 2013. I rebuilt the app by myself in one month, using Laravel 4.0. • By Mid 2014 we’d upgraded to Larvel 4.2 and migrated to DigitalOcean and Forge.
  • 11. - Leonardo da Vinci “Simplicity is the ultimate sophistication.”
  • 12. Timezones PROBLEMS: - Deadlines for everything. - International user base. - Admins setting deadlines in EST but the server saves and returns UTC.
  • 13. Timezones SOLUTION: - Accessor and Mutator methods on models. - Carbon library to add or subtract the necessary GMT offsets and set the correct timezone.
  • 14. Relationships PROBLEMS: - Database normalization can require a lot of extra tables. - A user has the following relationships: contact, profile, timezone, shirt size, groups … - Admin created content needs a table. Then that content gets manipulated by a user, so that needs a new table; so on and so on.
  • 15. Relationships SOLUTION: 
 Eloquent Relationship Methods - One to One - One to Many - Many to Many - Polymorphic - Many to Many Polymorphic (Yes I’m using all of them!)
  • 16. BIG Data PROBLEMS: - N+1, - detailed filters and searches - exporting, Eloquent sometimes too slow for large memory-intensive exports (server time outs).
  • 17. BIG Data SOLUTIONS: Eager loading for N+1 issue. URI query strings with Query Scopes in the models allowed for thousands of result variations. Query builder, raw SQL statements, and pushing that logic to a queue job, I was able to get the export speed needed.
  • 18. Permissions PROBLEM: Admins, staff, interns, group owners, user content management, etc. This requires more than authentication.
  • 19. Permissions SOLUTION: Created a permissions table with boolean attributes (more control than user roles). Using Laravel’s route filters I can check a user’s access permission on protected routes.
  • 20. Slugable PROBLEM: A lot of pages need user-friendly URLs over numerical IDs (pages, profiles, projects, fundraisers, etc.)
  • 21. Slugable SOLUTION: The power of polymorphism! Use a slugs table, validation to ensure unique slugs, a polymorphic relationship, and a PagesController to lookup a slug and then route it to it’s class type.
  • 22. Security PROBLEM: We save a lot of sensitive personal information. Medical records, passport copies, visas, etc. We have to comply with laws: PCI, Hippa
  • 23. Security SOLUTION: We can encrypt using Laravel’s Bcrypt method. We can store and retrieve files in a secure app/ storage outside the public directory using Laravel’s file class.
  • 24. Time Savers Automate “chores” and “tedious” tasks with custom artisan commands. Example: grab all profile pics, rename, and organize in minutes
  • 25. Scaling Missions.Me works at a relentless pace, is growing rapidly, and is a pioneer in it’s industry. Mobile Missions API in just 4 weeks using Lumen. lamejorrepdominicana. com - 1 week dev time with Laravel.
  • 26. Workflow Task based rapid prototyping SCRUM and Agile practices Git-flow branching model: Master, Develop, Feature, Release, Hotfix
  • 27. The Future of MM • Refactor - some code is 2 years old - lots of code smells! • Upgrade to Laravel 5.1 • Move to distributed system managed with Envoyer - load balancer, multi-servers, zero down time • Adopt an API centric architecture (Lumen micro-services) • Create a richer UI with a JavaScript framework (polymer, vue.js) • Offer Missions.Me as a SAAS