Documentation

How SmileAgile works for the voters, the Scrum Masters and their departments, how it keeps the votes anonymous, and how to contribute.

How it works

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.

Voters

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.

Vote form

Scrum Masters

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.

My teams: a card per team
Example: the demo teams

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.

A team's morale, sprint after sprint
Example: the demo teams

All comments gathers the comments of every sprint, listed by score. Copy a sprint's votes for the retrospective.

All the comments of a team
Example: the demo teams

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.

Departments

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.

A department's morale, period after period
Example: the demo teams

AI assistants (MCP)

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

Privacy and anonymity

Data Privacy and anonymous votes are the key of getting actual feedback.
  • The results are always shown aggregated, never who voted what.
  • The comments are listed by score, never in the order of the votes.
  • Your comments are read by your team's managers, who may analyze results and comments with AI tools. Anonymous votes stay anonymous.

Cookies and local storage

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.

Roles

In short: keep it simple!
WhoWhat they can do
Guest
GUEST
Anyone, no sign-in: reads the public pages and votes with a survey's link.
Scrum Master
TEAMS.OWNER
Manages their teams and their surveys, reads their morale and comments.
Teams administrator
TEAMS.ADMIN
Changes the settings of any team, Export/Import included; the surveys stay their owners'.
Department owner
ORGANIZATIONS.OWNER
Combines teams into a department and follows its morale.
Departments administrator
ORGANIZATIONS.ADMIN
Changes any department.
Users administrator
USERS.ADMIN
Activates the new accounts (a company's Google account: at once), confirms the ones activated at once.
Site administrator
ADMIN
The service's settings, its messages, and the log of the AI assistants' access.

Contributing

Code

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.

Translations

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.

Translate to a new language

  1. Copy the template, vote.pot or happiness.pot, into src/locale/{language}/LC_MESSAGES/, f.e. src/locale/gd/LC_MESSAGES/ for Scottish Gaelic.
  2. Name it happiness.po, whichever the template: the vote page's is a part of the app's.
  3. Translate it, then compile it to happiness.mo: POEdit does it when saving, else msgfmt -o happiness.mo happiness.po.

Eager for a quick win?

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!