KioskSurvey is a web application designed for creating and conducting simple surveys, optimized for kiosk environments or standalone tablet use. It allows users to easily set up questions with multiple-choice answers and view results in real-time. The interface is multilingual, supporting English and German out of the box.
Check it out here.
- Easy Survey Creation: Quickly create new surveys with a single question and multiple customizable answer options.
- Simple Participation: Users can take surveys with a clean, touch-friendly interface.
- Real-time Results: View aggregated survey results dynamically.
- Customizable Appearance: Adjust background and button colors for each survey to match branding or preference.
- Multilingual Support: Currently supports English and German, with the ability to switch languages on the fly.
- Persistent Storage: Survey configurations and results are saved in the browser's local storage.
- Responsive Design: Adapts to various screen sizes, suitable for tablets and desktops.
- SvelteKit: Frontend framework for building the application.
- Svelte 5 (Runes): Utilizes the latest Svelte features for reactivity and state management.
- TypeScript: For type safety and improved developer experience.
- shadcn & Tailwind CSS: For styling the user interface.
- Paraglide JS: For internationalization (i18n) and managing translations.
- Vite: Build tool for fast development and optimized production builds.
- Bun: Used as the runtime and package manager (implied by
bun.lockb
). - Playwright: For End-to-End testing.
- Vitest: For unit and component testing.
- Bun (latest version recommended)
- Node.js (if not using Bun exclusively for all Node-related tasks)
-
Clone the repository:
git clone <repository-url> cd kiosk-survey
-
Install dependencies:
bun install
-
Run the development server:
bun run dev
This will start the application, typically on
http://localhost:5173
. -
Build for production (static site): The project is configured with
@sveltejs/adapter-static
.bun run build
The static files will be generated in the
build
directory.
- Run unit and component tests:
bun run test:unit
- Run End-to-End tests (requires a running dev server or build):
bun run test:e2e
src/routes/(app)
: Contains the SvelteKit page and layout components.+page.svelte
: Main page for managing surveys.survey/+page.svelte
: Page for taking a survey.results/+page.svelte
: Page for viewing survey results.+layout.svelte
: Root layout, handles language switching and global styles.
src/lib/stores.ts
: Manages the state of surveys (creation, results, persistence to local storage).src/lib/components/
: Reusable Svelte components (e.g., dialogs, buttons).messages/
: Source JSON files for translations (e.g.,en.json
,de.json
).
Contributions are welcome! If you'd like to contribute, please follow these general guidelines:
- Fork the repository.
- Create a new branch for your feature or bug fix (
git checkout -b feature/your-feature-name
orbugfix/issue-number
). - Make your changes.
- Ensure tests pass (
bun run test:unit
,bun run test:e2e
). - Commit your changes with clear and descriptive messages.
- Push to your forked repository.
- Open a pull request to the main repository.
Please ensure your code adheres to the existing coding style and linting rules (bun run lint
).
This project is licensed under the MIT License.