astro-tractstack 2.1.3 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +54 -266
- package/bin/create-tractstack.js +9 -6
- package/dist/index.js +109 -71
- package/package.json +4 -2
- package/templates/css/custom.css +5 -0
- package/templates/icons/code.svg +18 -0
- package/templates/icons/li.svg +4 -0
- package/templates/icons/link.svg +22 -0
- package/templates/icons/p.svg +3 -0
- package/templates/src/client/app.js +80 -1
- package/templates/src/components/Footer.astro +1 -1
- package/templates/src/components/codehooks/BunnyVideoSetup.tsx +6 -6
- package/templates/src/components/codehooks/EpinetDurationSelector.tsx +3 -3
- package/templates/src/components/codehooks/FeaturedArticleSetup.tsx +1 -1
- package/templates/src/components/codehooks/ListContentSetup.tsx +2 -2
- package/templates/src/components/codehooks/ProductCardSetup.tsx +1 -1
- package/templates/src/components/codehooks/ProductGridSetup.tsx +2 -2
- package/templates/src/components/codehooks/SandboxRegisterForm.tsx +3 -3
- package/templates/src/components/compositor/Compositor.tsx +25 -9
- package/templates/src/components/compositor/Node.tsx +168 -496
- package/templates/src/components/compositor/PanelVisibilityWrapper.tsx +1 -0
- package/templates/src/components/compositor/elements/SignUp.tsx +1 -1
- package/templates/src/components/compositor/elements/YouTubeWrapper.tsx +2 -0
- package/templates/src/components/compositor/nodes/CreativePane.tsx +262 -0
- package/templates/src/components/compositor/nodes/GhostInsertBlock.tsx +4 -6
- package/templates/src/components/compositor/nodes/GridLayout.tsx +4 -2
- package/templates/src/components/compositor/nodes/Markdown.tsx +18 -3
- package/templates/src/components/compositor/nodes/Pane.tsx +11 -5
- package/templates/src/components/compositor/nodes/RenderChildren.tsx +1 -1
- package/templates/src/components/compositor/nodes/tagElements/NodeAnchorComponent.tsx +5 -5
- package/templates/src/components/compositor/nodes/tagElements/NodeBasicTag.tsx +90 -42
- package/templates/src/components/compositor/nodes/tagElements/NodeImg.tsx +2 -0
- package/templates/src/components/compositor/nodes/tagElements/NodeText.tsx +27 -1
- package/templates/src/components/compositor/preview/PaneSnapshotGenerator.tsx +10 -8
- package/templates/src/components/compositor/tools/NodeOverlay.tsx +224 -0
- package/templates/src/components/compositor/tools/PaneOverlay.tsx +122 -0
- package/templates/src/components/edit/Header.tsx +68 -9
- package/templates/src/components/edit/PanelSwitch.tsx +42 -4
- package/templates/src/components/edit/SettingsPanel.tsx +2 -3
- package/templates/src/components/edit/ToolMode.tsx +1 -31
- package/templates/src/components/edit/pane/AddPanePanel_break.tsx +2 -2
- package/templates/src/components/edit/pane/AddPanePanel_codehook.tsx +1 -1
- package/templates/src/components/edit/pane/AddPanePanel_new.tsx +193 -659
- package/templates/src/components/edit/pane/AddPanePanel_reuse.tsx +15 -82
- package/templates/src/components/edit/pane/AiRestylePaneModal.tsx +95 -45
- package/templates/src/components/edit/pane/ConfigPanePanel.tsx +137 -49
- package/templates/src/components/edit/pane/RestylePaneModal.tsx +1 -1
- package/templates/src/components/edit/pane/steps/AiCreativeDesignStep.tsx +375 -0
- package/templates/src/components/edit/pane/steps/AiDesignStep.tsx +1 -23
- package/templates/src/components/edit/pane/steps/AiLibraryCopyStep.tsx +327 -0
- package/templates/src/components/edit/pane/steps/AiRefineDesignStep.tsx +267 -0
- package/templates/src/components/edit/pane/steps/AiStandardDesignStep.tsx +371 -0
- package/templates/src/components/edit/pane/steps/CopyInputStep.tsx +201 -76
- package/templates/src/components/edit/pane/steps/CreativeInjectStep.tsx +141 -0
- package/templates/src/components/edit/panels/CreativeImagePanel.tsx +435 -0
- package/templates/src/components/edit/panels/CreativeLinkPanel.tsx +110 -0
- package/templates/src/components/edit/panels/StyleCodeHookPanel.tsx +1 -1
- package/templates/src/components/edit/panels/StyleParentPanel.tsx +118 -126
- package/templates/src/components/edit/panels/StyleParentPanel_add.tsx +3 -2
- package/templates/src/components/edit/panels/StyleParentPanel_deleteLayer.tsx +1 -0
- package/templates/src/components/edit/panels/StyleParentPanel_remove.tsx +3 -1
- package/templates/src/components/edit/panels/StyleParentPanel_update.tsx +3 -1
- package/templates/src/components/edit/panels/StyleWidgetPanel.tsx +1 -1
- package/templates/src/components/edit/state/SaveModal.tsx +19 -787
- package/templates/src/components/edit/state/SaveToLibraryModal.tsx +2 -2
- package/templates/src/components/edit/storyfragment/StoryFragmentPanel_menu.tsx +1 -1
- package/templates/src/components/edit/widgets/BunnyWidget.tsx +5 -5
- package/templates/src/components/edit/widgets/InteractiveDisclosureWidget.tsx +1 -1
- package/templates/src/components/edit/widgets/SignupWidget.tsx +1 -1
- package/templates/src/components/fields/ActionBuilderTimeSelector.tsx +1 -1
- package/templates/src/components/fields/ArtpackImage.tsx +11 -3
- package/templates/src/components/fields/BackgroundImage.tsx +8 -0
- package/templates/src/components/fields/BackgroundImageWrapper.tsx +15 -9
- package/templates/src/components/fields/ImageUpload.tsx +6 -0
- package/templates/src/components/form/ActionBuilderField.tsx +15 -5
- package/templates/src/components/form/ActionBuilderSlugSelector.tsx +1 -1
- package/templates/src/components/form/ColorPicker.tsx +1 -1
- package/templates/src/components/form/EnumSelect.tsx +1 -1
- package/templates/src/components/form/NumberInput.tsx +1 -1
- package/templates/src/components/form/StringArrayInput.tsx +1 -1
- package/templates/src/components/form/StringInput.tsx +1 -1
- package/templates/src/components/form/UnsavedChangesBar.tsx +1 -1
- package/templates/src/components/form/advanced/APIConfigSection.tsx +2 -2
- package/templates/src/components/form/advanced/AuthConfigSection.tsx +2 -2
- package/templates/src/components/profile/ProfileCreate.tsx +1 -1
- package/templates/src/components/profile/ProfileEdit.tsx +1 -1
- package/templates/src/components/storykeep/Dashboard_Advanced.tsx +2 -2
- package/templates/src/components/storykeep/controls/content/BeliefForm.tsx +1 -1
- package/templates/src/components/storykeep/controls/content/ContentSummary.tsx +2 -2
- package/templates/src/components/storykeep/controls/content/KnownResourceTable.tsx +1 -1
- package/templates/src/components/storykeep/controls/content/ManageContent.tsx +6 -6
- package/templates/src/components/storykeep/controls/content/MenuForm.tsx +1 -1
- package/templates/src/components/storykeep/controls/content/PaneTable.tsx +358 -0
- package/templates/src/components/storykeep/controls/content/ResourceTable.tsx +1 -1
- package/templates/src/constants/prompts.json +18 -10
- package/templates/src/constants.ts +3 -0
- package/templates/src/hooks/usePaneFragments.ts +60 -0
- package/templates/src/lib/session.ts +71 -16
- package/templates/src/pages/[...slug].astro +4 -46
- package/templates/src/pages/api/css.ts +149 -0
- package/templates/src/pages/maint.astro +1 -1
- package/templates/src/pages/storykeep/login.astro +2 -2
- package/templates/src/stores/nodes.ts +162 -49
- package/templates/src/stores/orphanAnalysis.ts +6 -30
- package/templates/src/stores/previews.ts +7 -0
- package/templates/src/stores/storykeep.ts +0 -8
- package/templates/src/types/compositorTypes.ts +53 -10
- package/templates/src/utils/compositor/aiGeneration.ts +93 -0
- package/templates/src/utils/compositor/allowInsert.ts +2 -0
- package/templates/src/utils/compositor/htmlAst.ts +704 -0
- package/templates/src/utils/compositor/nodesHelper.ts +281 -102
- package/templates/src/utils/compositor/savePipeline.ts +893 -0
- package/templates/src/utils/etl/index.ts +3 -0
- package/templates/src/utils/etl/transformer.ts +10 -0
- package/templates/src/utils/helpers.ts +101 -0
- package/utils/inject-files.ts +100 -62
- package/templates/icons/text.svg +0 -6
- package/templates/src/components/compositor/NodeWithGuid.tsx +0 -69
- package/templates/src/components/compositor/nodes/GridLayout_eraser.tsx +0 -33
- package/templates/src/components/compositor/nodes/Markdown_eraser.tsx +0 -56
- package/templates/src/components/compositor/nodes/Pane_DesignLibrary.tsx +0 -269
- package/templates/src/components/compositor/nodes/Pane_eraser.tsx +0 -186
- package/templates/src/components/compositor/nodes/Pane_layout.tsx +0 -79
- package/templates/src/components/compositor/nodes/tagElements/NodeA_eraser.tsx +0 -26
- package/templates/src/components/compositor/nodes/tagElements/NodeBasicTag_eraser.tsx +0 -61
- package/templates/src/components/compositor/nodes/tagElements/NodeBasicTag_insert.tsx +0 -120
- package/templates/src/components/compositor/nodes/tagElements/NodeBasicTag_settings.tsx +0 -62
- package/templates/src/components/compositor/nodes/tagElements/NodeButton_eraser.tsx +0 -26
package/README.md
CHANGED
|
@@ -1,303 +1,91 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
Static technology forces you to serve the exact same generic monologue to everyone—whether they are a "tire kicker" or a "high-ticket buyer."
|
|
10
|
-
|
|
11
|
-
Legacy tools (Wix, WordPress) suffer from **Intent Blindness**. They were built for page views, not signal clarity. They force your best leads to dig through a haystack to find the "hidden door" they need, causing them to bounce.
|
|
12
|
-
|
|
13
|
-
## The Solution: A Living Funnel
|
|
14
|
-
|
|
15
|
-
TractStack is an **Epistemic Hypermedia Server** that acts as a triage nurse, not a brochure. It turns a fragile "page view" into a powerful, privacy-first user journey.
|
|
16
|
-
|
|
17
|
-
### Core Philosophy
|
|
18
|
-
|
|
19
|
-
1. **The Recall (No Cookies Required):** We moved "memory" from fragile cookies to a proprietary server-side logic engine. This ensures the conversation persists across privacy blocks and browser refreshes.
|
|
20
|
-
2. **Smart Triage:** Our logic engine identifies 'High-Intent' users instantly and accelerates them to conversion, while automatically nurturing the rest.
|
|
21
|
-
3. **Hidden Doors:** Instead of a static page, you define content paths that only open when a user signals interest.
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
## The Tech Stack: "Convert OS"
|
|
26
|
-
|
|
27
|
-
TractStack is a hybrid engine designed for performance and logic.
|
|
28
|
-
|
|
29
|
-
- **Frontend:** [Astro](https://astro.build/) (The "Free" Web Press). Renders SEO-ready, indexable HTML.
|
|
30
|
-
- **Backend:** [Golang](https://go.dev/) (The Logic Processor). A compiled, server-side engine that manages state, session continuity, and adaptive content.
|
|
31
|
-
- **Glue:** [HTMX](https://htmx.org/). Enables real-time, dynamic interactions without heavy client-side frameworks.
|
|
32
|
-
- **Database:** SQLite by default (Zero Config) with optional [Turso](https://app.turso.tech/) support.
|
|
33
|
-
|
|
34
|
-
## For Agencies & Empire Builders
|
|
35
|
-
|
|
36
|
-
TractStack was engineered for the "Missing Middle"—high-volume creators and agencies who have outgrown static sites but don't need enterprise bloat.
|
|
37
|
-
|
|
38
|
-
- **Wholesale DXP:** An infrastructure-first model. Agencies pay a flat wholesale fee and own the recurring margin on "Growth Projects."
|
|
39
|
-
- **Visual Journey Mapping:** Don't guess what works. See it. TractStack visualizes the narrative journey of your audience, showing exactly how they navigate your Hidden Doors.
|
|
40
|
-
- **No Code Required:** Build engaging, interactive websites where the "general noise" fades and specific content triggers based on engagement.
|
|
41
|
-
|
|
42
|
-
## Quick Install
|
|
43
|
-
|
|
44
|
-
### One-Line Installer
|
|
45
|
-
|
|
46
|
-
```bash
|
|
47
|
-
curl -fsSL https://get.tractstack.com | bash
|
|
1
|
+
# The "Free Web" Press by At Risk Media
|
|
2
|
+
|
|
3
|
+
```text
|
|
4
|
+
▄██▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄██▄▄▄▄▄▄▄██▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄
|
|
5
|
+
██ ██ ██ ▀▀ ██ ██ ▀▀ ██ ██ ▀▀ ██ ▀▀ ██ ██ ▀▀ ██ ██
|
|
6
|
+
██ ██▀█▄ ██▀██ ██ ▄▄ ██ ▀▀▀██ ██ ██▀██ ██ ▄▄ ██▀█▄
|
|
7
|
+
██ ██ ██ ██▄██ ██▄██ ██ ██▄██ ██ ██▄██ ██▄██ ██ ██
|
|
8
|
+
▀▀ ▀▀ ▀▀ ▀▀ ▀▀▀
|
|
48
9
|
```
|
|
49
10
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
### Installation Options
|
|
53
|
-
|
|
54
|
-
- `--quick` - Development setup in user directory (no sudo required)
|
|
55
|
-
- `--prod --domain=yourdomain.com` - Production single-tenant
|
|
56
|
-
- `--multi --domain=yourdomain.com` - Production multi-tenant hosting
|
|
57
|
-
- `--dedicated SITE_ID --domain=yourdomain.com` - Isolated dedicated instance
|
|
11
|
+
## The Manifesto: The Web Has Amnesia
|
|
58
12
|
|
|
59
|
-
|
|
13
|
+
Traditional CMS software conquered the world by making publishing easy—but it broke the relationship. It treats every visitor like a stranger. It forces you to serve the exact same generic monologue to everyone, relying on invasive third-party tracking to guess who is reading.
|
|
60
14
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
- Node.js 20+
|
|
64
|
-
- pnpm (recommended) or npm
|
|
65
|
-
- Go 1.22+
|
|
66
|
-
- Git
|
|
67
|
-
|
|
68
|
-
### Step 1: Install Go Backend
|
|
69
|
-
|
|
70
|
-
```bash
|
|
71
|
-
mkdir -p ~/t8k/src
|
|
72
|
-
cd ~/t8k/src
|
|
73
|
-
git clone https://github.com/AtRiskMedia/tractstack-go.git
|
|
74
|
-
cd tractstack-go
|
|
75
|
-
echo "GO_BACKEND_PATH=$HOME/t8k/t8k-go-server/" > .env
|
|
76
|
-
echo "GIN_MODE=release" >> .env
|
|
77
|
-
go build -o tractstack-go ./cmd/tractstack-go
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
### Step 2: Create Astro Frontend
|
|
81
|
-
|
|
82
|
-
```bash
|
|
83
|
-
cd ~/t8k
|
|
84
|
-
pnpm create astro@latest my-tractstack --template minimal --typescript strict --install
|
|
85
|
-
cd my-tractstack
|
|
86
|
-
pnpm add astro-tractstack@latest
|
|
87
|
-
echo "PRIVATE_GO_BACKEND_PATH=$HOME/t8k/t8k-go-server/" > .env
|
|
88
|
-
npx create-tractstack
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
### Step 3: Start Development
|
|
92
|
-
|
|
93
|
-
```bash
|
|
94
|
-
# Terminal 1: Go backend
|
|
95
|
-
cd ~/t8k/src/tractstack-go
|
|
96
|
-
./tractstack-go
|
|
97
|
-
|
|
98
|
-
# Terminal 2: Astro frontend
|
|
99
|
-
cd ~/t8k/src/my-tractstack
|
|
100
|
-
pnpm dev
|
|
101
|
-
```
|
|
15
|
+
## The "Free Web" Press Restores the Signal
|
|
102
16
|
|
|
103
|
-
|
|
17
|
+
**TractStack v2.2** is not just a CMS; it is a **Signal Continuity Engine**. It takes the concept of the "Press"—broadcasting ideas—and adds the "Handshake."
|
|
104
18
|
|
|
105
|
-
|
|
19
|
+
### 1. The Mass-Produced Handshake (Smart Triage)
|
|
106
20
|
|
|
107
|
-
|
|
21
|
+
Legacy tools suffer from **Intent Blindness**. The Free Web Press serves a dialogue.
|
|
108
22
|
|
|
109
|
-
-
|
|
110
|
-
-
|
|
111
|
-
-
|
|
112
|
-
- SQLite database included
|
|
23
|
+
- **Identify Intent:** Our logic engine acts like a triage nurse, identifying high-intent users instantly.
|
|
24
|
+
- **The Hidden Door:** You define content paths that only open when a user signals interest.
|
|
25
|
+
- **The Result:** You don't just "publish" a site; you press a branded universe that adapts to every visitor.
|
|
113
26
|
|
|
114
|
-
###
|
|
27
|
+
### 2. Generative Architecture (No-Code Freedom)
|
|
115
28
|
|
|
116
|
-
|
|
117
|
-
- SSL certificates via Let's Encrypt
|
|
118
|
-
- nginx reverse proxy
|
|
119
|
-
- systemd services for automatic startup
|
|
120
|
-
- PM2 process management
|
|
29
|
+
Don't settle for the "rigid" look of standard platforms.
|
|
121
30
|
|
|
122
|
-
|
|
31
|
+
- **AI Design Creator:** Design any section by prompt for complete creative control.
|
|
32
|
+
- **Semantic Integrity:** We extract content as Markdown for full-text search and maximum SEO benefit, ensuring your signal remains concrete even when the design is fluid.
|
|
123
33
|
|
|
124
|
-
|
|
125
|
-
- Wildcard domain support (`*.yourdomain.com`)
|
|
126
|
-
- Tenant management at `/sandbox/register`
|
|
127
|
-
- Multiple isolated websites from one installation
|
|
34
|
+
### 3. Total Memory (Privacy as Infrastructure)
|
|
128
35
|
|
|
129
|
-
|
|
36
|
+
We moved "memory" from fragile third-party cookies (The Dependent Web) to a proprietary server-side logic engine (The Free Web).
|
|
130
37
|
|
|
131
|
-
-
|
|
132
|
-
-
|
|
133
|
-
- Maximum isolation and customization
|
|
134
|
-
- Perfect for agencies managing multiple clients
|
|
38
|
+
- **The Handshake:** First-party session management keeps the conversation fluid without external tracking.
|
|
39
|
+
- **The Kill Switch:** True data sovereignty. If a user revokes consent, the system immediately purges the session.
|
|
135
40
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
```
|
|
139
|
-
~/t8k/ # Development install
|
|
140
|
-
├── src/
|
|
141
|
-
│ ├── tractstack-go/ # Go backend source
|
|
142
|
-
│ │ └── tractstack-go # Compiled binary
|
|
143
|
-
│ └── my-tractstack/ # Astro frontend
|
|
144
|
-
│ ├── src/
|
|
145
|
-
│ │ ├── components/ # Custom components
|
|
146
|
-
│ │ ├── pages/ # Astro pages
|
|
147
|
-
│ │ └── custom/ # Your customizations
|
|
148
|
-
│ └── astro.config.mjs
|
|
149
|
-
└── t8k-go-server/ # Backend data storage
|
|
150
|
-
├── config/
|
|
151
|
-
│ ├── t8k/
|
|
152
|
-
│ │ └── tenants.json # Tenant registry
|
|
153
|
-
│ └── default/ # Default tenant config
|
|
154
|
-
│ ├── env.json # Core configuration
|
|
155
|
-
│ ├── brand.json # Site branding
|
|
156
|
-
│ ├── knownResources.json # Resource tracking
|
|
157
|
-
│ ├── tailwindWhitelist.json # CSS optimization
|
|
158
|
-
│ └── media/ # Media files
|
|
159
|
-
│ ├── images/
|
|
160
|
-
│ └── css/
|
|
161
|
-
├── db/
|
|
162
|
-
│ └── default/
|
|
163
|
-
│ └── tractstack.db # SQLite database
|
|
164
|
-
└── log/
|
|
165
|
-
├── system.log
|
|
166
|
-
├── tenant.log
|
|
167
|
-
└── database.log
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
### Production Structure
|
|
171
|
-
|
|
172
|
-
Production installations live at `/home/t8k/` with the same structure plus:
|
|
173
|
-
|
|
174
|
-
```
|
|
175
|
-
/home/t8k/
|
|
176
|
-
├── bin/
|
|
177
|
-
│ └── tractstack-go # Production binary
|
|
178
|
-
├── etc/
|
|
179
|
-
│ ├── letsencrypt/ # SSL certificates
|
|
180
|
-
│ ├── pm2/ # PM2 configs
|
|
181
|
-
│ └── t8k-ports.conf # Port allocations
|
|
182
|
-
├── scripts/
|
|
183
|
-
│ └── t8k-concierge.sh # Build automation
|
|
184
|
-
└── state/ # Build queue
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
## Multi-Tenant Features
|
|
188
|
-
|
|
189
|
-
TractStack v2 includes powerful multi-tenant capabilities:
|
|
41
|
+
---
|
|
190
42
|
|
|
191
|
-
|
|
192
|
-
- **Domain Routing**: Automatic subdomain routing (`tenant.yourdomain.com`)
|
|
193
|
-
- **Isolated Data**: Each tenant has separate databases and media
|
|
194
|
-
- **Capacity Management**: Configurable tenant limits
|
|
195
|
-
- **Email Activation**: Automated tenant activation emails
|
|
43
|
+
## The Tech Stack
|
|
196
44
|
|
|
197
|
-
|
|
45
|
+
TractStack is a hybrid engine designed for performance and logic.
|
|
198
46
|
|
|
199
|
-
|
|
47
|
+
- **Frontend:** [Astro](https://astro.build) — The "Free Web" Press for SEO-ready HTML.
|
|
48
|
+
- **Backend:** Golang — A compiled engine that manages state, session continuity, and adaptive content.
|
|
49
|
+
- **Glue:** [HTMX](https://htmx.org) — Enables real-time, dynamic interactions without heavy client-side frameworks.
|
|
50
|
+
- **Data:** [Turso](https://turso.tech) — Scalable high performance, lightweight database.
|
|
200
51
|
|
|
201
|
-
|
|
202
|
-
# Status
|
|
203
|
-
sudo systemctl status tractstack-go
|
|
204
|
-
sudo -u t8k pm2 status astro-main
|
|
52
|
+
## Quick Start
|
|
205
53
|
|
|
206
|
-
|
|
207
|
-
sudo systemctl restart tractstack-go
|
|
208
|
-
sudo -u t8k pm2 restart astro-main
|
|
209
|
-
|
|
210
|
-
# Logs
|
|
211
|
-
sudo journalctl -u tractstack-go -f
|
|
212
|
-
sudo -u t8k pm2 logs astro-main
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
### Dedicated Instances
|
|
54
|
+
Visit [https://tractstack.com](Tract Stack dot com) for hosted plans. For the do-it-yourself folks, our one-line installer handles the heavy lifting:
|
|
216
55
|
|
|
217
56
|
```bash
|
|
218
|
-
|
|
219
|
-
sudo systemctl status tractstack-go@SITE_ID
|
|
220
|
-
sudo -u t8k pm2 status astro-SITE_ID
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
## Build System
|
|
224
|
-
|
|
225
|
-
The build concierge processes automated builds via CSV files in `/home/t8k/state/`:
|
|
226
|
-
|
|
227
|
-
```csv
|
|
228
|
-
type=main,tenant=default,command=build
|
|
229
|
-
type=dedicated,site=SITE_ID,command=build
|
|
57
|
+
curl -fsSL https://get.tractstack.com | bash
|
|
230
58
|
```
|
|
231
59
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
1. Pulls latest code from Git
|
|
235
|
-
2. Builds Go backend and Astro frontend
|
|
236
|
-
3. Extracts Tailwind CSS optimizations
|
|
237
|
-
4. Restarts services
|
|
238
|
-
5. Cleans up processed files
|
|
239
|
-
|
|
240
|
-
## Database Options
|
|
241
|
-
|
|
242
|
-
### SQLite (Default)
|
|
243
|
-
|
|
244
|
-
- Zero configuration required
|
|
245
|
-
- Perfect for most websites
|
|
246
|
-
- Automatic backups and maintenance
|
|
247
|
-
- Scales to hundreds of thousands of visitors
|
|
248
|
-
|
|
249
|
-
### Turso Cloud Database
|
|
250
|
-
|
|
251
|
-
- Distributed SQLite with global replication
|
|
252
|
-
- Configure during site initialization
|
|
253
|
-
- Seamless scaling for high-traffic sites
|
|
254
|
-
- Built-in analytics and monitoring
|
|
255
|
-
|
|
256
|
-
## Development Workflow
|
|
257
|
-
|
|
258
|
-
1. **Edit Content**: Use StoryKeep CMS at `/storykeep`
|
|
259
|
-
2. **Customize Design**: Modify components in `src/custom/`
|
|
260
|
-
3. **Add Features**: Create CodeHooks for dynamic functionality
|
|
261
|
-
4. **Test Changes**: Hot reloading with `pnpm dev`
|
|
262
|
-
5. **Deploy**: Automated builds handle production updates
|
|
60
|
+
For more recipes and community guides, visit [FreeWebPress.org](https://FreeWebPress.org).
|
|
263
61
|
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
TractStack provides RESTful APIs for:
|
|
267
|
-
|
|
268
|
-
- Content management
|
|
269
|
-
- User analytics
|
|
270
|
-
- Belief tracking (visitor preferences)
|
|
271
|
-
- Multi-tenant operations
|
|
272
|
-
- Media handling
|
|
62
|
+
---
|
|
273
63
|
|
|
274
|
-
##
|
|
64
|
+
## Technical Scrutiny: Privacy & Continuity
|
|
275
65
|
|
|
276
|
-
**
|
|
66
|
+
- **Functional Persistence:** Uses `tractstack_session_id` for short-lived (24hr) functional continuity.
|
|
67
|
+
- **Hybrid Restoration:** Uses a secure "fingerprint" token to reconstruct sessions in RAM if the server restarts, ensuring continuity without permanent tracking.
|
|
68
|
+
- **Data Minimization:** Sensitive profile data (name, email) is stored in the user's browser `localStorage` rather than a centralized database by default.
|
|
277
69
|
|
|
278
|
-
|
|
279
|
-
sudo /home/t8k/scripts/t8k-uninstall.sh
|
|
280
|
-
```
|
|
70
|
+
---
|
|
281
71
|
|
|
282
|
-
|
|
72
|
+
## Roadmap v4.0
|
|
283
73
|
|
|
284
|
-
|
|
285
|
-
sudo ~/t8k/src/tractstack-go/pkg/scripts/t8k-uninstall.sh
|
|
286
|
-
```
|
|
74
|
+
### Transcribe Integration
|
|
287
75
|
|
|
288
|
-
|
|
76
|
+
Expanding full-text search to include embedded video transcripts (via BunnyCDN).
|
|
289
77
|
|
|
290
|
-
- **
|
|
291
|
-
- **
|
|
292
|
-
- **
|
|
293
|
-
- **Community**: Join discussions about adaptive web experiences
|
|
78
|
+
- **AI Visual Editor:** Powered by AssemblyAI askLemur to highlight and extract transcript sections.
|
|
79
|
+
- **Smart Content:** Automated chaptering and descriptions for long-form video.
|
|
80
|
+
- **Video-to-Blog Pipeline:** Transform video highlights into rich, searchable blog pages using the design library.
|
|
294
81
|
|
|
295
|
-
|
|
82
|
+
### Future Infrastructure
|
|
296
83
|
|
|
297
|
-
|
|
298
|
-
The backend epistemic hypermedia server is available via the **O'Sassy Open Source License**
|
|
84
|
+
- **HTMX 4.0 Migration:** Full alignment with the htmx 4.0 standard to ensure the platform remains at the cutting edge of hypermedia.
|
|
299
85
|
|
|
300
86
|
---
|
|
301
87
|
|
|
302
|
-
|
|
303
|
-
|
|
88
|
+
**Documentation:** [tractstack.org](https://tractstack.org)
|
|
89
|
+
**Support:** [hello@tractstack.com](mailto:hello@tractstack.com)
|
|
90
|
+
|
|
91
|
+
_TractStack v2.2 Made with ❤️ by At Risk Media_
|
package/bin/create-tractstack.js
CHANGED
|
@@ -332,7 +332,7 @@ PUBLIC_ENABLE_BUNNY="${finalResponses.enableBunny ? 'true' : 'false'}"
|
|
|
332
332
|
try {
|
|
333
333
|
// Install React and Node adapter
|
|
334
334
|
execSync(
|
|
335
|
-
`${addCommand} react@^
|
|
335
|
+
`${addCommand} react@^19.0.0 react-dom@^19.0.0 @astrojs/react@^4.4.2 @astrojs/node@^9.4.3`,
|
|
336
336
|
{ stdio: 'inherit' }
|
|
337
337
|
);
|
|
338
338
|
console.log(kleur.green('✅ React and Node adapter installed'));
|
|
@@ -348,7 +348,7 @@ PUBLIC_ENABLE_BUNNY="${finalResponses.enableBunny ? 'true' : 'false'}"
|
|
|
348
348
|
|
|
349
349
|
// Install UI components
|
|
350
350
|
execSync(
|
|
351
|
-
`${addCommand} @ark-ui/react@^5.
|
|
351
|
+
`${addCommand} @ark-ui/react@^5.30.0 @heroicons/react@^2.1.1 @internationalized/date@^3.10.1`,
|
|
352
352
|
{
|
|
353
353
|
stdio: 'inherit',
|
|
354
354
|
}
|
|
@@ -365,12 +365,15 @@ PUBLIC_ENABLE_BUNNY="${finalResponses.enableBunny ? 'true' : 'false'}"
|
|
|
365
365
|
console.log(kleur.green('✅ Visualization dependencies installed'));
|
|
366
366
|
|
|
367
367
|
// Install additional dependencies
|
|
368
|
-
execSync(
|
|
368
|
+
execSync(
|
|
369
|
+
`${addCommand} path-to-regexp@^8.0.0 postcss postcss-selector-parser`,
|
|
370
|
+
{ stdio: 'inherit' }
|
|
371
|
+
);
|
|
369
372
|
console.log(kleur.green('✅ Additional dependencies installed'));
|
|
370
373
|
|
|
371
374
|
// Install dev dependencies
|
|
372
375
|
execSync(
|
|
373
|
-
`${addCommand} -D @types/node@^22.18.0 @types/react@^
|
|
376
|
+
`${addCommand} -D @types/node@^22.18.0 @types/react@^19.0.0 @types/react-dom@^19.0.0 @types/d3@^7.4.3 @types/d3-sankey@^0.12.3 prettier@^3.7.4 prettier-plugin-astro@^0.14.1 prettier-plugin-tailwindcss@^0.7.2 typescript@^5.9.3 @types/tinycolor2@^1.4.6 @mhsdesign/jit-browser-tailwindcss@^0.4.2`,
|
|
374
377
|
{ stdio: 'inherit' }
|
|
375
378
|
);
|
|
376
379
|
console.log(kleur.green('✅ Dev dependencies installed'));
|
|
@@ -379,12 +382,12 @@ PUBLIC_ENABLE_BUNNY="${finalResponses.enableBunny ? 'true' : 'false'}"
|
|
|
379
382
|
console.log('Please run manually:');
|
|
380
383
|
console.log(
|
|
381
384
|
kleur.cyan(
|
|
382
|
-
`${addCommand} react@^
|
|
385
|
+
`${addCommand} react@^19.0.0 react-dom@^19.0.0 @astrojs/react@^4.4.2 @astrojs/node@^9.4.3 @nanostores/react@^1.0.0 nanostores@^1.0.1 @nanostores/persistent ulid@^3.0.1 @ark-ui/react@^5.30.0 @heroicons/react@^2.1.1 @internationalized/date@^3.10.1 d3@^7.9.0 d3-sankey@^0.12.3 recharts@^3.1.2 player.js@^0.1.0 tinycolor2@1.6.0 html-to-image@^1.11.13 path-to-regexp@^8.0.0 postcss postcss-selector-parser`
|
|
383
386
|
)
|
|
384
387
|
);
|
|
385
388
|
console.log(
|
|
386
389
|
kleur.cyan(
|
|
387
|
-
`${addCommand} -D @types/node@^22.18.0 @types/react@^
|
|
390
|
+
`${addCommand} -D @types/node@^22.18.0 @types/react@^19.0.0 @types/react-dom@^19.0.0 @types/d3@^7.4.3 @types/d3-sankey@^0.12.3 prettier@^3.7.4 prettier-plugin-astro@^0.14.1 prettier-plugin-tailwindcss@^0.7.2 typescript@^5.9.3 @types/tinycolor2@^1.4.6 @mhsdesign/jit-browser-tailwindcss@^0.4.2`
|
|
388
391
|
)
|
|
389
392
|
);
|
|
390
393
|
process.exit(1);
|