Welcome to another entry of the Under the Code series, where we explore how other Salesforce devs created incredible Salesforce API applications.
Let's see what we can learn from Enrico's experience.
Why did you create this app?
ORGanizer for Salesforce was just an experiment to speed up my daily Salesforce work as a developer (as a lazy developer I wanted to automate certain tasks and easily have the whole org context within a single browser tab) while learning how to develop a Chrome extension, thing that somehow still fascinates me.
How much planning/thinking did you do before starting to code?
I started coding the extension with really low preparation ahead, because honestly I had the first features already pictured in my mind: the only gap between the idea and the first version of the app was just the time needed to code it.
From the beginning of the first coding session to the first version available on the Chrome Web Store, it took approximately 2 months, and most of the time was related to the fact I wanted it to be production-ready (so the most of the app was ready in 2 or 3 weeks).
How did you choose which technologies to use (programming language, frameworks, etc)?
- testing automation tools (like Selenium which requires some more coding skills depending on the programming language of choice)
- code repository not to lose any change during your creative coding sessions (I went for Git)
- scripts to automate the final version of the package that will be submitted to the store
- project management tools to keep track of releases and future features, mailing list and CRM to take track of user requests and bugs
- a website to publish all your app knowledge to the public.
At a high level, what is the architecture of this app? What are its components?
The app is composed by
- The client extension (available on Chrome, Microsoft Edge and Firefox)
- An API server used to handle the licensing validation
- A public website that used for product knowledge publication
- A proxy service that handles all the security regarding Https certificates, caching and other performance features
How did you learn all the technologies required to create this app? Was this pre-existing knowledge or did you learn specifically to create this app?
How did you come up with the UI? Did you review existing apps for ideas? Do you have suggestions to our readers on how to create a simple and nice UI?
I usually take inspiration from other tools' UIs (if I can find one that somehow matches) or simply start from a template (using standard CSS libraries such as Bootstrap) and then enhance till I find the best user experience. I have to admit that the community of users helped me (and continue helping me) to adapt the UX for better usage.
Did you use a css framework? How much css did you write yourself? Any lessons learned?
I adopted a well known CSS framework, with simple customizations: I suggest not to reinvent the wheel especially, like me, you are not a UI expert.
How do you handle authentication to the user's Salesforce org?
One of the primary features of ORGanizer is handling login into Salesforce web portal. The login experience is handled using different login methods:
- Username / password using the standard login page
- Username / password / token using the SOAP/REST APIs
- OAuth 2.0 authentication using an external Connected App that identified ORGanizer as a third party app
Any big lessons learned from creating this app?
Every feature is an important feature (even the small enhancement makes your users happy), knowledge is power (bad documentation leads to lower user adoption), listen to the community of users (thanks to the "Support" page in the support site I received hundreds of amazing ideas)
What advice would you give to other devs looking to create a fullstack salesforce app?
If you have an (even small) idea of something that can enhance people, don't hesitate, start building it, even a prove of concept / demo is enough, you can still enhance it later but you may have on your hands the next killing app: don't wait until it's perfect, perfection does not exist, but technology changes so quickly that you may lose your train!
How did creating this app positively affect your career? (speaking at sf events, new job opportunities, networking, new projects, etc.)
ORGanizer helped me achieving the Salesforce MVP status (along with my other online activities), taking a session during Dreamforce 17, making my name related to a well known product, which is used by thousands of Salesforce professionals.
Do you have any comments or feedback? Leave a comment! I read each and every one of them!