Getting help
Smile is a free, open-source project and is provided with no warranty or guarantee of support. Effective use of this project assumes you know modern Javascript syntax, have some familiarity with typing commands in a terminal program, git, GitHub, and understand basic concepts about web servers and web design. Smile is designed to make life easier for programmers/developers. There are better packages and services for people looking for no-code solutions that avoid the need to program altogether including Qualtrics, SurveyMonkey, and Google Forms.
If you need help or are stuck we have collected some useful resources.
Documentation
Obviously, if you are reading this you are aware of the extensive documentation. You might be surprised how often common issues can be addressed by carefully reading the documentation. We put a lot of time into making it as clear and comprehensive as possible and keep it up to date.
Other resources
Technically, Smile is simply a collection of open-source tools that have been integrated into a single project. As a result, you can also look at the documentation for the underlying tools. For example, the following links might help learn more about the underlying technologies:
Javascript
Most of the code you need to write for Smile is in Javascript. Here are are useful resources for learning Javascript:
- Modern Javascript - a great resource for learning Javascript
- Interneting is hard - Friendly web development tutorials for complete beginners
Vue.js
The core of Smile is built using the Vue.js framework. Here are some resources for the parts of the Vue.js ecosystem used in the project:
- Learn Vue - useful website for learning the Vue.js framework
- Vuejs tutorial - A tutorial for learning Vue.js
- Vuejs docs - Complete docs for Vue.js
- VueUse collection of Vue composables (useful for things like keyboard, mouse, and storage helpers)
Nuxt
Smile is distributed as a Nuxt module, so every experiment is itself a Nuxt application. Nuxt handles routing, auto-imports, the server runtime (via Nitro), and the dev server. Most of the features of a experiment that aren't part of Smile itself come from Nuxt:
- Nuxt docs - the main reference, well organized
- Nuxt modules - how Nuxt modules work (useful if you want to extend Smile or write your own module)
- Nitro - the server runtime Smile uses for API routes, middleware, and the production build
Vite
Vite is the build tool that Nuxt uses under the hood. It compiles the various libraries together so they load quickly on the participant's browser, and enables fast development of complex front-end Javascript applications. You typically don't interact with Vite directly when using Smile, but knowing it exists helps when reading error messages:
- Vite - the Vite docs are quite comprehensive
- Vitepress - this documentation website uses Vitepress, a static site generator built on Vite
CSS/Styling
- Tailwind CSS - the CSS framework used in the project. The docs are quite intuitive.
Github
- Git for beginners
- Github Actions - used to deploy the project
Unix/Shell commands
- The missing semester of your CS education - how to use the shell/terminal program, git, security concepts/encryption
- Shell.how - helps you learn and interpret different shell/terminal commands
GitHub Discussions
If you can't find an answer to your question in the documentation, you can try posting in the GitHub Discussions on the base repo. This is a good place to ask questions, share tips, and propose new features.
GitHub Issues
If you think you have found a bug in the software, you can open an issue on the GitHub Issues. Please provide as much information as you can and also first search existing issues (both open and closed).