My Favorite Stack for Online Behavioral Studies
Over the years, I've spent considerable time developing software solutions for behavioral studies. Through this experience, I've discovered a set of tools that I find particularly valuable. In this post, I'll share my preferred stack for conducting online behavioral studies that require highly customizable individual tasks and surveys.

When developing software for behavioral studies, I've found that the most crucial aspect is ensuring a CI/CD pipeline that enables rapid iterations and updates.
Setting up a Git Repository
The initial step is establishing a git repository to host the software's code. I recommend GitHub due to its wealth of features beneficial for software development. The software deployment occurs through a CI/CD pipeline, triggered with each new commit pushed to the repository.
Choosing a Deployment Platform
Next, you need to decide where to deploy the software. In my experience, a simple VPS (Virtual Private Server) suffices for most scenarios - there are numerous affordable options available.
I typically run my projects in a docker container, which maximizes their portability and maintainability. Data is stored separately on a database server, either a MongoDB or PostgreSQL instance, depending on the project's needs.
For managing and monitoring Docker containers, I've found Coolify to be an excellent open-source platform. It allows me to check container logs and status in real-time, which has proven invaluable for ongoing projects.
Developing with JavaScript
For the software itself, I primarily use JavaScript with React. I've had great success with Next.js, a framework that enables JavaScript usage on both client and server sides. This approach is particularly advantageous as it allows for code reuse between client and server, enhancing software maintainability.
In my projects, I pair Next.js with Tailwind CSS, a utility-first CSS framework. I've found that Tailwind significantly simplifies the creation of complex designs, especially for those who may not specialize in CSS or design.
Conclusion
This setup has served me well in handling most behavioral study software needs. It provides a robust, flexible foundation for creating customizable tasks and surveys. Of course, in this field, new challenges often arise that may require adapting our approaches. But that's part of what keeps this work interesting and dynamic.
I hope sharing my experiences and preferred tools proves helpful in your own behavioral study software development journey!