Your SlideShare is downloading. × - Spotting Service Powered by Django
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply - Spotting Service Powered by Django


Published on

A talk I held at Djangoconfi '12. Beginner level. This talk mainly shows the whole process and stack used.

A talk I held at Djangoconfi '12. Beginner level. This talk mainly shows the whole process and stack used.

  • Be the first to comment

  • Be the first to like this

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. bongaus.fiSpotting Service Powered by Django Juho Vepsäläinen
  • 2. Who?● Jukka Raimovaara (Mentalhouse Oy), ○ Perl-guru, hosting● Juho Vepsäläinen (Koodilehto co-op), ○ Python, JavaScript ○ @bebraw (Twitter) ○
  • 3. What?● - Spotting information in one place● Target (QR) -> url -> Info● Examine info later● Competitions (who spotted most? ...)● Analytics after event
  • 4. Why?● Initiated by Jyväskylä Design Week (contract work)● Extended on need basis (AgileJkl pivot)● On longer term we might want to get some bucks out of it
  • 5. Evolution
  • 6.
  • 7.
  • 8.
  • 9. Development Notes● Instanssi demo: working Minimum Viable Product (MVP) with a few users● Design Week: no notable use, bottleneck in content production● AgileJkl pivot: success, around half (~100) of the attendees participated
  • 10. Technology
  • 11.
  • 12. Why Django?● Challenge: team of two, tight schedule● Familiar already. Couldve used Node or something else but Django felt like a safe bet● Admin UI big bonus on retrospect
  • 13. PixelPlacebo CC BY-NC
  • 14. Why Bootstrap?● Creating a good and responsive CSS layout is tough● Bootstrap helps quite a bit!● Provides column layout and lots of other goodies●
  • 15. Architecture gunicorn Bootstrap Django 1.3 (markdown, sorl-thumbnail, qrcode, auth Luova paja jsonrpclib, django-simplegravatar) MySQL + South
  • 16. In Addition● pip● virtualenv, virtualenvwrapper● git● Adobe InDesign (generated cards)● Adobe Illustrator (logo)● jQuery (Slimbox 2, Masonry, Rating)
  • 17. Data Model● Modeled Events, Targets, Spotting and a couple of more● Defined some business logic there instead of views (good idea in this case)● Could go further in this by using Managers and some meta-hackery. See query-api-django-orm/
  • 18. Lessons Learned
  • 19. South● Definitely worth using● Worked mostly fine● Had to dump it once and build own custom migration (SQLite to rescue)● Souths development (lack of it) worrying
  • 20. aldoaldoz CC BY-NC-SA
  • 21. Migration Migraine1. Decided to do some drastic changes to schema2. Dumped South3. Wrote migration manually4. Migrate data using SQLite5. dumpdata -> JSON6. loaddata -> MySQL7. Use South again
  • 22. Kevin Severud BY-SA
  • 23. Database● SQLite ok for dev● Made it difficult to spot certain issues, though due to loose constraints● MySQL in production (be careful with conf! UTF-8, engine)● Maintained demo fixtures for a while (good idea)
  • 24. Esther17 BY-NC-ND
  • 25. Authentication + Authorization● Djangos native auth in dev● Custom solution (ext. auth.) in production● Ext. auth hooks into Django User, though● Some custom code for authorization (ie. target ownership)
  • 26. On External Auth● Part of Luova paja that runs on a CMS● Provides registration + login (FB, regular)● Effectively performs redirects and uses JSON-RPC● Utilizes checksums (secret keys) and user info exchange
  • 27. Stuck in Customs BY-NC-SA
  • 28. Testing● Unit tests for core logic● Eased development somewhat (harder to break)● Probably shouldve tested views and urls too● Acceptance tests that describe the users flow might have been handy too to have (Selenium, zombie?)
  • 29. luxuryluke CC BY-NC-ND
  • 30. Bootstrap● Somewhat useful without customizations even● Use vanilla version till you need to optimize (request size, amount etc.)● Customizable using LESS (colors, etc.)
  • 31. Philipp Lücke BY-NC
  • 32. Development Speed● Developing a MVP was a good idea (Instanssi demo)● The rest grew around that● Pivots affect velocity (new, possibly conflicting logic)● Tests are essential due to this (easier to spot goof ups)
  • 33. "Perfect is the enemy of good"
  • 34. Summary
  • 35. Summary● provides a way to store spotting information in one place● Might grow into a business of some sort● MVPs are valuable!● Django+Bootstrap was a good combo
  • 36. ?? ?