1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
|
# Personal Consolidation Dashboard
A unified web dashboard that aggregates tasks, notes, and meal planning from multiple services into a single interface.
## Features
- **Task Management**: View and manage Todoist tasks
- **Notes**: Access recent Obsidian notes
- **Meal Planning**: View upcoming meals from PlanToEat
- **Responsive Design**: Works on desktop and mobile
- **Auto-refresh**: Updates every 5 minutes
- **Caching**: Fast performance with SQLite cache
## Tech Stack
- **Backend**: Go 1.21+
- **Database**: SQLite
- **Frontend**: HTMX + Tailwind CSS
- **APIs**: Todoist, PlanToEat, Trello, Obsidian (filesystem)
## Prerequisites
- Go 1.21 or higher
- API keys for:
- [Todoist](https://todoist.com/app/settings/integrations) - **Required**
- [Trello](https://trello.com/app-key) - **Required** (generates both API key and token)
- [PlanToEat](https://www.plantoeat.com/) - **Optional** (API not publicly available)
- Obsidian vault path - **Optional** (if using Obsidian)
## Installation
### Quick Start (5 minutes)
See **[QUICKSTART.md](QUICKSTART.md)** for the fastest way to get running.
### Detailed Setup
1. **Clone the repository**:
```bash
git clone <your-repo-url>
cd task-dashboard
```
2. **Install dependencies**:
```bash
go mod download
```
3. **Set up environment variables**:
```bash
cp .env.example .env
```
4. **Get your API keys**:
**Todoist** (required):
- Go to https://todoist.com/app/settings/integrations
- Copy your API token
**Trello** (required):
- Go to https://trello.com/power-ups/admin
- Create a Power-Up (any name, e.g., "Personal Dashboard")
- Go to "API Key" tab and click "Generate a new API Key"
- Copy the API Key (NOT the Secret - you won't use that)
- In the API Key description, find the "testing/for-yourself" instructions
- Click the Token link to generate your personal token
- Click "Allow" and copy the token
- **Note:** You need API Key + Token, NOT Secret
5. **Edit `.env`** with your keys:
```bash
TODOIST_API_KEY=your_todoist_token
TRELLO_API_KEY=your_trello_key
TRELLO_TOKEN=your_trello_token
```
6. **Run the application**:
```bash
go run cmd/dashboard/main.go
```
Migrations run automatically on startup.
7. **Open your browser**:
Navigate to `http://localhost:8080`
## Configuration
All configuration is done through environment variables. See `.env.example` for all available options.
### Required Variables
- `TODOIST_API_KEY`: Your Todoist API token (Settings → Integrations → API token)
- `TRELLO_API_KEY`: Your Trello API key (https://trello.com/app-key)
- `TRELLO_TOKEN`: Your Trello token (generate at https://trello.com/app-key)
### Optional Variables
- `OBSIDIAN_VAULT_PATH`: Path to your Obsidian vault
- `PLANTOEAT_API_KEY`: PlanToEat API key (not publicly available - leave empty)
- `PORT`: Server port (default: 8080)
- `CACHE_TTL_MINUTES`: Cache duration (default: 5)
- `DEBUG`: Enable debug logging (default: false)
## Project Structure
```
task-dashboard/
├── cmd/dashboard/ # Application entry point
├── internal/
│ ├── api/ # External API clients
│ ├── config/ # Configuration management
│ ├── handlers/ # HTTP request handlers
│ ├── models/ # Data models
│ └── store/ # Database operations
├── web/
│ ├── static/ # CSS and JavaScript
│ └── templates/ # HTML templates
└── migrations/ # Database migrations
```
## Development
### Running Tests
```bash
go test ./...
```
### Running with Live Reload
```bash
# Install air for live reload
go install github.com/cosmtrek/air@latest
# Run with air
air
```
### Building for Production
```bash
go build -o dashboard cmd/dashboard/main.go
./dashboard
```
## API Endpoints
### Dashboard
- `GET /` - Main dashboard view
### API Routes
- `GET /api/tasks` - Get all tasks (JSON)
- `GET /api/notes` - Get recent notes (JSON)
- `GET /api/meals` - Get upcoming meals (JSON)
- `POST /api/refresh` - Force refresh all data
## Roadmap
### Phase 1: Read-Only Aggregation (Current)
- [x] Project setup
- [ ] Display Todoist tasks
- [ ] Display Obsidian notes
- [ ] Display PlanToEat meals
- [ ] Responsive UI
### Phase 2: Write Operations
- [x] Create Todoist tasks
- [x] Mark tasks complete
- [ ] Create Obsidian notes
- [ ] Add meals to planner
### Phase 3: Enhancements
- [ ] Unified search
- [ ] Quick capture
- [ ] Daily digest
- [ ] PWA support
## Troubleshooting
### Database locked error
If you see "database is locked", ensure only one instance of the application is running.
### API rate limits
The app caches responses for 5 minutes. If you need fresh data, use the refresh button.
### Obsidian notes not showing
Verify `OBSIDIAN_VAULT_PATH` points to the correct directory and the application has read permissions.
## Contributing
This is a personal project, but suggestions and bug reports are welcome via issues.
## License
MIT License - feel free to use this for your own personal dashboard.
|