diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..3a904de
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,15 @@
+node_modules/
+dist/
+.vscode/
+.DS_Store
+.idea
+.run
+.vite/
+
+local/
+build/
+bin/
+wailsjs/
+
+Gemfile.lock
+_site
\ No newline at end of file
diff --git a/docs/Gemfile b/docs/Gemfile
new file mode 100644
index 0000000..d1e5ddc
--- /dev/null
+++ b/docs/Gemfile
@@ -0,0 +1,23 @@
+source "https://rubygems.org"
+
+gem "bulma-clean-theme"
+group :jekyll_plugins do
+ gem "github-pages", "~> 231"
+ gem 'jemoji'
+end
+
+# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
+# and associated library.
+platforms :mingw, :x64_mingw, :mswin, :jruby do
+ gem "tzinfo", ">= 1", "< 3"
+ gem "tzinfo-data"
+end
+
+# Performance-booster for watching directories on Windows
+gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]
+
+# Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem
+# do not have a Java counterpart.
+gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby]
+
+gem "webrick", "~> 1.8"
diff --git a/docs/_config.yaml b/docs/_config.yaml
new file mode 100644
index 0000000..f02795b
--- /dev/null
+++ b/docs/_config.yaml
@@ -0,0 +1,59 @@
+# Site settings
+# These are used to personalize your new site. If you look in the HTML files,
+# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
+# You can create any custom variable you would like, and they will be accessible
+# in the templates via {{ site.myvariable }}.
+
+title: Taskmail
+description: >-
+ Kanban-style email client
+
+github_username: badarsebard
+gh_sponsor: badarsebard
+domain: taskmail.-is-local.org
+url: "https://taskmail.is-local.org"
+
+defaults:
+ - scope:
+ path: ""
+ type: "pages"
+ values:
+ hide_hero: true
+
+images: "/assets/images"
+favicon: "/assets/images/favicon-16x16.png"
+
+feed:
+ disable_in_development: true
+google_analytics: false
+
+# Build settings
+theme: bulma-clean-theme
+fixed_navbar: top
+
+plugins:
+ - jemoji
+# - jekyll-feed
+
+include:
+ - .well-known
+
+# Exclude from processing.
+# The following items will not be processed, by default.
+# Any item listed under the `exclude:` key here will be automatically added to
+# the internal "default list".
+#
+# Excluded items can be processed by explicitly listing the directories or
+# their entries' file path in the `include:` list.
+
+exclude:
+ - .sass-cache/
+ - .jekyll-cache/
+ - gemfiles/
+ - Gemfile
+ - Gemfile.lock
+ - node_modules/
+ - vendor/bundle/
+ - vendor/cache/
+ - vendor/gems/
+ - vendor/ruby/
diff --git a/docs/_data/navigation.yaml b/docs/_data/navigation.yaml
new file mode 100644
index 0000000..c08be76
--- /dev/null
+++ b/docs/_data/navigation.yaml
@@ -0,0 +1,9 @@
+- name: Roadmap
+ link: /roadmap
+ external: false
+- name: Data Schema
+ link: /schema
+ external: false
+- name: GitHub
+ link: https://github.com/badarsebard/Taskmail
+ external: true
\ No newline at end of file
diff --git a/docs/_includes/footer.html b/docs/_includes/footer.html
new file mode 100644
index 0000000..13a1cdc
--- /dev/null
+++ b/docs/_includes/footer.html
@@ -0,0 +1,15 @@
+
\ No newline at end of file
diff --git a/docs/_includes/head-scripts.html b/docs/_includes/head-scripts.html
new file mode 100644
index 0000000..dc55a77
--- /dev/null
+++ b/docs/_includes/head-scripts.html
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/docs/_includes/header.html b/docs/_includes/header.html
new file mode 100644
index 0000000..7ca68b9
--- /dev/null
+++ b/docs/_includes/header.html
@@ -0,0 +1,73 @@
+
\ No newline at end of file
diff --git a/docs/assets/css/app.scss b/docs/assets/css/app.scss
new file mode 100644
index 0000000..9422b43
--- /dev/null
+++ b/docs/assets/css/app.scss
@@ -0,0 +1,10 @@
+---
+---
+
+.content{
+ padding: 0 10rem;
+}
+
+$primary: #1F2937FF;
+// Import Main CSS file from theme
+@import "main";
\ No newline at end of file
diff --git a/docs/assets/images/favicon-16x16.png b/docs/assets/images/favicon-16x16.png
new file mode 100644
index 0000000..ad6a8e5
Binary files /dev/null and b/docs/assets/images/favicon-16x16.png differ
diff --git a/docs/assets/images/favicon-32x32.png b/docs/assets/images/favicon-32x32.png
new file mode 100644
index 0000000..abb48e1
Binary files /dev/null and b/docs/assets/images/favicon-32x32.png differ
diff --git a/docs/assets/images/favicon.ico b/docs/assets/images/favicon.ico
new file mode 100644
index 0000000..c1300c2
Binary files /dev/null and b/docs/assets/images/favicon.ico differ
diff --git a/docs/assets/images/github-mark-white.png b/docs/assets/images/github-mark-white.png
new file mode 100644
index 0000000..50b8175
Binary files /dev/null and b/docs/assets/images/github-mark-white.png differ
diff --git a/docs/media/logo.png b/docs/assets/images/logo.png
similarity index 100%
rename from docs/media/logo.png
rename to docs/assets/images/logo.png
diff --git a/docs/assets/images/taskmail_demo.png b/docs/assets/images/taskmail_demo.png
new file mode 100644
index 0000000..2ccbc9c
Binary files /dev/null and b/docs/assets/images/taskmail_demo.png differ
diff --git a/docs/development.md b/docs/development.md
new file mode 100644
index 0000000..bc1e801
--- /dev/null
+++ b/docs/development.md
@@ -0,0 +1,2 @@
+
+# Development
\ No newline at end of file
diff --git a/docs/graph_app_registration.md b/docs/graph_app_registration.md
new file mode 100644
index 0000000..a031dd4
--- /dev/null
+++ b/docs/graph_app_registration.md
@@ -0,0 +1,2 @@
+
+# Graph App Registration
diff --git a/docs/README.md b/docs/index.md
similarity index 78%
rename from docs/README.md
rename to docs/index.md
index 4d0ac5a..125c137 100644
--- a/docs/README.md
+++ b/docs/index.md
@@ -1,5 +1,9 @@
-
+---
+title: Taskmail
+---
+
+
Taskmail is an app that combines an email client with a Kanban-style task board. Emails and tasks are presented in the same way and can be managed together or even combined.
## Active Development
diff --git a/docs/layouts.txt b/docs/layouts.txt
new file mode 100644
index 0000000..f9517c3
--- /dev/null
+++ b/docs/layouts.txt
@@ -0,0 +1,167 @@
+# Component Layouts
+## App
+-----------------------------------------
+| Banner |
+-----------------------------------------
+| | | Canvas |
+| S | M | |
+| i | a | |
+| d | i | |
+| e | l | |
+| b | b | |
+| a | o | |
+| r | x | |
+| | | |
+-----------------------------------------
+
+## Sidebar (Expanded)
+---------------
+| | // expand/collapse icon
+| |
+| Accounts | // accounts section label
+| | // user icon | account name
+| | // user icon | account name
+| + Add | // plus icon | Add
+| |
+| Folders | // folders section label
+| Inbox | // inbox icon | folder name
+| Sent | // sent icon | folder name
+| Drafts | // drafts icon | folder name
+| Trash | // trash icon | folder name
+| Archive | // archive icon | folder name
+| |
+| |
+| |
+| |
+---------------
+
+## Sidebar (Collapsed)
+-------
+| | // expand/collapse icon
+| |
+| | // user icon
+| | // user icon
+| + | // plus icon
+| |
+| | // inbox icon
+| | // sent icon
+| | // drafts icon
+| | // trash icon
+| | // archive icon
+| |
+| |
+| |
+| |
+-------
+
+## Mailbox
+---------------
+| search bar |
+| |
+| Card |
+| Card |
+| Card |
+| |
+| |
+| |
+| |
+| |
+| |
+| |
+| |
+| |
+| |
+| |
+| |
+---------------
+
+## Canvas (Board)
+-------------------------------------
+| Columns | Expanded | C | + | Done |
+| | | o | A | |
+| Card | Card | l | d | Card |
+| Card | Card | l | d | Card |
+| Card | | a | | Card |
+| | | p | B | Card |
+| | | s | u | |
+| | | e | t | |
+| | | d | t | |
+| | | | o | |
+| | | | n | |
+| | | | | |
+-------------------------------------
+
+## Canvas (Details)
+-------------------------------------
+| Header |
+|-----------------------------------|
+| Track |
+|-----------------------------------|
+| Conversation |
+| Message 1 |
+| Message 2 |
+| Message 3 |
+|-----------------------------------|
+
+## Card
+----------------------------------
+| From | H | // icon is FROM initials or clipboard, Hover Palette (HoP) overlays timestamp and appears on card hover
+| | Subject... Time| o | // light vertical bar between top and bottom icons only when bottom icon displays
+| Preview | P | // FROM, Subject, and Time in wrapped flexbox, FROM for email only
+---------------------------------- // bottom icon is paperclip only when there is an attachment
+| (tag color) (tag color) | // tags, narrow pills
+----------------------------------
+| (Snooze) (Due) (to-dos m/n) | // flex box
+| (notes #) (group #) |
+----------------------------------
+| + Add To-do | // add to-do
+| To-do 1 | // to-dos
+----------------------------------
+| + Add Note | // add note
+| Note 1 | // notes
+| Note 2 |
+----------------------------------
+|*| |----------------------------| // |*| is a vertical colored (cyan?) bar
+|*| | Sub-card 1 | // sub-cards
+|*| | | // no grouping in sub-cards
+|*| | | // no snooze in sub-cards
+|*| |----------------------------|
+|*| |----------------------------|
+|*| | Sub-card 2 |
+|*| | |
+|*| | |
+|*| |----------------------------|
+
+
+
+## Card (Untracked) (!Hover)
+-------------------------------------
+| FROM |
+| Subject... Time |
+| Preview |
+-------------------------------------
+
+## Card (Tracked) (!Hover)
+-------------------------------------
+| FROM |
+| Subject... Time |
+| Preview |
+-------------------------------------
+| Column Name |
+-------------------------------------
+
+## Card (Untracked) (Hover)
+-------------------------------------
+| FROM | | // mark done
+| Subject... Ti| | // move to column | timestamp covered
+| Preview | | // delete
+-------------------------------------
+
+## Card (Tracked) (Hover)
+-------------------------------------
+| FROM | | // mark seen
+| Subject... Ti| | // timestamp covered
+| Preview | | // locate card
+-------------------------------------
+| Column Name |
+-------------------------------------
\ No newline at end of file
diff --git a/docs/roadmap.md b/docs/roadmap.md
index b830388..8988301 100644
--- a/docs/roadmap.md
+++ b/docs/roadmap.md
@@ -1,14 +1,29 @@
+---
+title: Roadmap
+permalink: /roadmap
+---
+
# Roadmap
## Initial Release
-- [ ] Email client support for Outlook
-- [ ] Task board support
- - [ ] User-defined columns
+- [x] Email client support for Outlook
+- [x] Basic task board support
+ - [x] Add/delete columns
+ - [x] Collapse/expand columns
+ - [x] Add/delete cards
+ - [x] Drag and drop cards
+ - [x] Basic card actions: done, move, delete, seen, locate
+ {: style='list-style-type: none'}
+
+- [ ] Additional task board features
- [ ] Due dates
- [ ] Snoozing
- [ ] Notes
+ - [ ] Todo items
- [ ] Tags
- [ ] Attachments
- [ ] Grouping cards / sub-cards
+ {: style='list-style-type: none'}
+{: style='list-style-type: none'}
## Todoist Integration
- [ ] Add Todoist integration
@@ -33,3 +48,7 @@
- [ ] Window pop-outs
- [ ] Drafts
- [ ] Reading pane
+
+## Improvements
+- [ ] Address fields use tags instead of raw strings
+- [ ] Connect address fields to contacts (people API)
\ No newline at end of file
diff --git a/docs/schema.md b/docs/schema.md
new file mode 100644
index 0000000..f5204a9
--- /dev/null
+++ b/docs/schema.md
@@ -0,0 +1,168 @@
+---
+title: Data Schema
+permalink: /schema
+---
+
+:warning: __WARNING: This document is a work in progress and may not be accurate or complete during active development.__ :warning:
+
+# App Collections
+
+## Accounts `accounts`
+
+| Field | Type | Notes |
+|-------------------|---------------------|-----------------|
+| _id | UUIDv4 | Clover internal |
+| address | string | Email address |
+| active | bool | |
+| folderDeltaLink | string | |
+| messageDeltaLinks | map\[string\]string | |
+| expandMenu | bool | |
+
+# Account Collections
+
+## Folders `folders`
+
+| Field | Type | Notes |
+|----------------|----------|-----------------|
+| _id | UUIDv4 | Clover internal |
+| id | string | MS Graph Id |
+| displayName | string | |
+| parentFolderId | string | MS Graph Id |
+| isHidden | bool | |
+| childFolders | string[] | MS Graph Ids |
+
+## Messages `messages`
+
+| Field | Type | Notes |
+|----------------------------|-----------|-----------------|
+| _id | UUIDv4 | Clover internal |
+| id | string | MS Graph Id |
+| conversationIndex | byte[] | |
+| sentDateTime | timestamp | |
+| sender | object | |
+| ⤷ name | string | |
+| ⤷ address | string | |
+| subject | string | |
+| bodyPreview | string | |
+| @odata.type | string | |
+| createdDateTime | timestamp | |
+| lastModifiedDateTime | timestamp | |
+| changeKey | string | |
+| categories | string[] | |
+| receivedDateTime | timestamp | |
+| hasAttachments | bool | |
+| internetMessageId | string | |
+| importance | string | enum: 0, 1, 2 |
+| parentFolderId | string | MS Graph Id |
+| conversationId | string | MS Graph Id |
+| isDeliveryReceiptRequested | bool | |
+| isReadReceiptRequested | bool | |
+| isRead | bool | |
+| isDraft | bool | |
+| webLink | string | |
+| inferenceClassification | string | enum: 0, 1 |
+| body | object | |
+| ⤷ contentType | string | |
+| ⤷ content | string | |
+| from | object | |
+| ⤷ name | string | |
+| ⤷ address | string | |
+| toRecipients | object[] | |
+| ⤷ name | string | |
+| ⤷ address | string | |
+| ccRecipients | object[] | |
+| ⤷ name | string | |
+| ⤷ address | string | |
+| bccRecipients | object[] | |
+| ⤷ name | string | |
+| ⤷ address | string | |
+| replyTo | object[] | |
+| ⤷ name | string | |
+| ⤷ address | string | |
+| flag | object | |
+| ⤷ flagStatus | string | enum: 0, 1, 2 |
+| attachments | object[] | |
+| ⤷ id | string | MS Graph Id |
+| ⤷ contentType | string | |
+| ⤷ isInLine | bool | |
+| ⤷ lastModifiedDateTime | timestamp | |
+| ⤷ name | string | |
+| ⤷ size | int | |
+
+## Attachments `attachments`
+
+| Field | Type | Notes |
+|----------------------|-----------|-----------------|
+| _id | UUIDv4 | Clover internal |
+| id | string | MS Graph Id |
+| contentType | string | |
+| isInLine | bool | |
+| lastModifiedDateTime | timestamp | |
+| name | string | |
+| size | int | |
+| contentBytes | byte[] | |
+| contentId | string | |
+| contentLocation | string | |
+
+## Conversations `conversations`
+
+| Field | Type | Notes |
+|---------------------|-----------|-----------------|
+| _id | UUIDv4 | Clover internal |
+| id | string | MS Graph Id |
+| messages | object[] | MessageSummary |
+| ⤷ id | string | MS Graph Id |
+| ⤷ conversationIndex | byte[] | |
+| ⤷ receivedDateTime | timestamp | |
+| ⤷ sender | object | |
+| ⤷ ⤷ name | string | |
+| ⤷ ⤷ address | string | |
+| ⤷ subject | string | |
+| ⤷ bodyPreview | string | |
+| folders | string[] | MS Graph Ids |
+| latestTime | timestamp | |
+
+## Cards `cards`
+
+| Field | Type | Notes |
+|----------------|-----------|---------------------------|
+| _id | UUIDv4 | Clover internal |
+| done | bool | |
+| seen | bool | |
+| conversationId | UUIDv4 | fk: conversations._id |
+| sender | object | message only |
+| ⤷ name | string | |
+| ⤷ address | string | |
+| folders | string[] | fk: conversations.folders |
+| title | string | |
+| time | timestamp | |
+| bodyPreview | string | |
+| body | string | |
+| column | UUIDv4 | fk: columns._id |
+| tags | object[] | |
+| ⤷ name | string | |
+| ⤷ color | string | 6-digit HEX code |
+| snoozeDate | timestamp | |
+| dueDate | timestamp | |
+| todoItems | object[] | |
+| ⤷ text | string | |
+| ⤷ completed | bool | |
+| notes | object[] | |
+| ⤷ text | string | |
+| ⤷ time | timestamp | |
+| attachments | UUIDv4[] | fk: attachments._id |
+| parentId | UUIDv4 | fk: cards._id |
+| hasChildren | bool | |
+
+## Columns `columns`
+
+| Field | Type | Notes |
+|-----------|--------|-----------------------------------------------------------------|
+| _id | UUIDv4 | Clover internal |
+| board | string | Value is static `default. Other values to be implemented later. |
+| position | int | |
+| title | string | |
+| color | string | 6-digit HEX code |
+| collapsed | bool | |
+| sortType | string | enum: due, received, created |
+| sortDir | string | enum: asc, desc |
\ No newline at end of file