How SmileAgile works for the voters, the Scrum Masters and their departments, how it keeps the votes anonymous, and how to contribute.
Motto: must provide the confidence to the users their input is anonymous and useful for their scrum master.
Built for Scrum Masters, hence the sprints, SmileAgile fits any recurring survey: a team's settings word the question for the last sprint, the previous week, this week, or since the last survey.
After each sprint, the Scrum Master shares the survey's vote link. A team member opens it, picks a score from 0 (extremely unhappy) to 5 (extremely happy), and may add a comment. No account, no sign-in.
The vote page speaks 8 languages. Until the survey is closed, a voter can change their vote from the same browser.
My teams shows a card per team: its last morale and how it compares to its usual range, its last sprints, its survey and the next step (copy the vote link, close the survey, start the next one). Your favorite teams come first.
A team's morale page draws its sprints: their votes per score, their average, and the usual range (the average of the 4 previous sprints, give or take their variation). Show the votes as percentages or as numbers, 6 to 20 sprints; click a sprint to read its votes and comments; download the chart.
All comments gathers the comments of every sprint, listed by score. Copy a sprint's votes for the retrospective.
With the same email domain, your teammates' teams show in their own tab when their owners allow it in their profile. A team's settings export it, with its surveys and votes, and import it as a new team.
A department combines teams: its morale page groups their surveys by periods of 1 to 3 weeks. A day shift moves a survey opened early in the week to the previous one, to match the sprints.
Anonymity first: a period or a team with fewer than 3 votes is hidden, and no comment is shown across teams.
Connect your AI assistant (Claude, ChatGPT, Cursor...) to SmileAgile's MCP server: it reads your teams' morale, their trends and the anonymous comments, and prepares your retrospectives and reports when you ask it to.
With your approval, it can also start, close and reopen a survey, or publish a team's chart as a public link (about 6 months, revocable).
It reads what you can read, never who voted what. Each reading of the comments and each change is logged. AI assistants (MCP): Step by step
Skills teach it a method: a retrospective script, SMART action items, the tensions nobody names. AI skills: Step by step
Data Privacy and anonymous votes are the key of getting actual feedback.
One cookie is used to store the authentication token when you are logged in. Which applies to scrum masters only. Another cookie is used to store the language you select when clicking on the footer. A third one keeps the theme you pick, light or dark, with the button at the top. These cookies last 1 hour at most: after that, you sign in again, and the language and the theme go back to the defaults. During a sign in with Google, a last one lives 10 minutes at most. In short, if you change neither the language nor the theme and are not a scrum master, no cookie is set! Hence, cookies are absolutely not required to vote.
Your browser keeps a random code per survey (local storage), to prevent voting twice and to let you change your vote: nothing you typed. Signed in, your browser also keeps the scale you chose for the morale chart (100% or votes, local storage).
Privacy policy: what SmileAgile keeps, the cookies, your rights.
In short: keep it simple!
| Who | What they can do |
|---|---|
GuestGUEST | Anyone, no sign-in: reads the public pages and votes with a survey's link. |
Scrum MasterTEAMS.OWNER | Manages their teams and their surveys, reads their morale and comments. |
Teams administratorTEAMS.ADMIN | Changes the settings of any team, Export/Import included; the surveys stay their owners'. |
Department ownerORGANIZATIONS.OWNER | Combines teams into a department and follows its morale. |
Departments administratorORGANIZATIONS.ADMIN | Changes any department. |
Users administratorUSERS.ADMIN | Activates the new accounts (a company's Google account: at once), confirms the ones activated at once. |
Site administratorADMIN | The service's settings, its messages, and the log of the AI assistants' access. |
PHP is a controversial language... even better!
I chose PHP because it's by far the language I know the best. That being said, it's been a while since I coded for real! I wanted a quick win with a REST implementation. My MVP was these 2 end points: POST /surveys/{survey_uuid}/votes and GET /teams/{team_id}/chart.
Slim was like an easy choice.
Weeks in, weeks out, I asked my teams to use a cURL command to vote. That was a great success with my developers, not really for my POs! It was time to create a user friendly web page for them. I chose BULMA for the CSS framework and Twig for the templating.
PHP is still often taken has a second (or 3rd!) class language. I did my best as a PHP architect within ADP to elevate the best practices. We were not ashamed at all when comparing the code base of the other legitimate 'Java' teams, especially when comparing the performance and scaling!
Today: PHP 8.4, Slim 4, Twig 3, Bulma 1 and MySQL 8.4, on AWS.
Willing to help and support a new language? You are more than welcome!
The app speaks English and French; the vote page, 8 languages. Translate the vote page with vote.pot, the rest of the app with happiness.pot.
Not a big fan of re-inventing the wheel. I've been using gettext for years and it helped me so greatly that I haven't tried to challenge it!
POEdit helps to edit the .po files, but it's no longer required: an AI assistant (an LLM) translates them with minimal corrections.
Because the Git repository is not public yet, contact the author to be added as a contributor. The process will be using the regular pull request. If you are not a developer, requesting and sending the update to the author can still be used. I'll make sure your name is on the credits.
vote.pot or happiness.pot, into src/locale/{language}/LC_MESSAGES/, f.e. src/locale/gd/LC_MESSAGES/ for Scottish Gaelic.
happiness.po, whichever the template: the vote page's is a part of the app's.
happiness.mo: POEdit does it when saving, else msgfmt -o happiness.mo happiness.po.
The most used page is by far the vote one. So, why not translate this page to quickly gain some popularity? You got it! Instead of the full happiness.pot file, just use the vote.pot!