Have big, undefined goals? Here's a web application for managing nested questions, experiments, and their resolutions. I'm trying this out as an alternative to standard goal and task setting to help me deal with uncertainties better.
I wrote about why I use this approach in How do I achieve what I want. Everything's local, so your use will be completely private.
STEPS
- Write down a big question / uncertainty.
- That question is likely to have sub-questions. Using the '+' button, add those as well.
- Keep nesting those questions until you feel like they are sufficiently well defined for an experiment.
- Add those experiments in the 'To resolve' section.
- Tick off those experiments, and update your answers as you go along!
Built with Flask.
- Create and manage nested questions
- Track to-resolve items for each question
- Set time frames and track remaining time
- Add and update answers
- Modern, responsive UI with dark mode
- Clone the repository:
git clone https://github.com/casualPhysics/thought-tree.git
cd thought-tree- Create and activate a virtual environment:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- Install dependencies:
pip install -r requirements.txt- Run the application:
python app.pyThe application will be available at http://localhost:8000/. The root URL now serves index.html directly, and other static files are served from /static/.
- Backend: Flask, SQLAlchemy
- Frontend: HTML, JavaScript, TailwindCSS
- Database: SQLite
app.py: Main Flask applicationstatic/: Frontend assetsapp.js: Frontend JavaScriptstyles.css: Custom stylesindex.html: Main HTML template
instance/: Database files (not tracked in git)requirements.txt: Python dependencies
- Add a root question using the form at the top of the page
- Click "Add Child" on any question to create a sub-question
- Use the "Edit" button to modify questions or add time frames
- Add items to resolve under each question
- Add or update answers for each question
- Check off completed items in the "To Resolve" section
The application uses:
- Flask backend with SQLAlchemy for database management
- SQLite database for data storage
- Modern frontend with Tailwind CSS
- Vanilla JavaScript for interactivity
MIT License
