You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Remove the migrated v1 app from main
Production has served from the v2 base directory since the storage migration finished, so the flat app at the root was a full second copy of the site doing nothing: byte-identical stylesheet, parallel functions, its own test suite doubling CI. It is preserved at the v1-final tag. The migration guard and its checklist went with it since the migration it protected is complete. Dependabot now targets v2 only, and the README describes the current layout.
* chore: keep one set of project docs at the root
The v2 copies of CONTRIBUTING, SECURITY, LICENSE and the dotfiles duplicated the root set with small drifts. The root files now carry the stricter v2 wording (context packs, audience separation, current contact address) and the duplicates are gone.
* chore: delete the unreachable context import and clear functions
No rendered template or click handler ever wired importContext or clearContext; the admin screen intentionally says the pack cannot be changed from the deployed site.
* docs: match the privacy notes to the locked-down context workflow
* ci: validate the deployed v2 app
* Finish the v1 cleanup documentation
---------
Co-authored-by: Jamie Parr <JamieP-205@users.noreply.github.com>
Copy file name to clipboardExpand all lines: README.md
+22-18Lines changed: 22 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,7 +8,7 @@ The public experiment is available at [talkwithjamie.netlify.app](https://talkwi
8
8
9
9
## Status
10
10
11
-
**Experimental, active development** this is a personal AI chat experiment. Features and privacy controls continue to evolve.
11
+
**Experimental, active development**- this is a personal AI chat experiment. Features and privacy controls continue to evolve.
12
12
13
13
## Summary
14
14
@@ -19,17 +19,16 @@ workspace and is not available through public chat.
19
19
20
20
### Active codebase
21
21
22
-
[`v2/`](v2/) is the active deployment and the place for new development. The root application is
23
-
kept for migration history and compatibility notes; its version-specific setup and privacy details
24
-
are in [`v2/README.md`](v2/README.md).
22
+
[`v2/`](v2/) is the whole application: Netlify builds with `v2` as the base directory. The
23
+
original flat app that previously served production was removed once the migration finished;
24
+
it is still readable at the [`v1-final`](https://github.com/JamieP-205/talk-with-jamie/tree/v1-final) tag. Setup, context-pack and
25
+
privacy details live in [`v2/README.md`](v2/README.md).
25
26
26
27
## Architecture overview
27
28
28
29
The app uses a static frontend served by Netlify alongside a serverless backend. Authenticated and guest users interact with Netlify Functions through signed `HttpOnly` cookies. Persistent users, conversations and rate limits are stored in Netlify Blobs. The owner workspace can use a protected context pack, while public chat stays limited to approved general information. The configured AI provider generates responses from selected context rather than exposing source material.
29
30
30
-
| Talk With Jamie architecture |
31
-
| --- |
32
-
||
31
+

33
32
34
33
## Privacy first design choices
35
34
@@ -50,21 +49,25 @@ The app uses a static frontend served by Netlify alongside a serverless backend.
50
49
- A private drafting workspace for contact-specific reply ideas
51
50
- Configurable OpenAI-compatible or Cohere model providers
- Automated unit, syntax, deployment-guard and site-structure tests
52
+
- Automated unit, integration, syntax and site-structure tests
54
53
55
54
## Key files
56
55
57
-
-`index.html` - frontend shell and metadata
58
-
-`styles.css` - responsive public and admin interface styles
59
-
-`app.js` - client state, rendering and API requests
60
-
-`netlify/functions/api.js` - Netlify Function entry point
61
-
-`netlify/functions/_lib.js` - authentication, storage, validation, provider and route logic
62
-
-`test/` - unit tests for security-sensitive helpers and deployment controls
63
-
-`tools/` - site validation and production migration guard
56
+
-`v2/index.html` - frontend shell and metadata
57
+
-`v2/styles.css` - responsive public and admin interface styles
58
+
-`v2/app.js` - client state, rendering and API requests
59
+
-`v2/netlify/functions/api.js` - Netlify Function entry point
60
+
-`v2/netlify/functions/_lib.js` - authentication, storage, validation, provider and route logic
61
+
-`v2/test/` - unit and integration tests for the securityand context boundaries
62
+
-`v2/tools/` - site validation and the local private context-pack builder
64
63
65
64
## Technical approach
66
65
67
-
The frontend is a lightweight static site that communicates with a single Netlify Function. Authentication is handled via signed, same-site cookies; passwords use scrypt. The function uses a modular library for storage, validation and provider logic. Conversations and user records live in Netlify Blobs. A locally generated, redacted context pack helps the model produce replies that reflect my tone without exposing raw messages. The project is tested with unit and integration tests and guarded with a production migration flag to prevent accidental data loss.
66
+
The frontend is a lightweight static site that communicates with a single Netlify Function. Authentication is handled via signed, same-site cookies; passwords use scrypt. The function uses a modular library for storage, validation and provider logic. Conversations and user records live in Netlify Blobs. A locally generated, redacted context pack helps the model produce replies that reflect my tone without exposing raw messages. The project is tested with unit and integration tests covering the security and privacy boundaries.
67
+
68
+
## Development note
69
+
70
+
I used AI-assisted coding tools as a pair-programming and review aid for parts of the security-sensitive backend, particularly signed sessions, password hashing, same-origin checks and tests around the public/private context boundary. The automated tests document the expected behaviour, and I remain responsible for the code I deploy.
68
71
69
72
## Deployment
70
73
@@ -78,16 +81,17 @@ changes.
78
81
## Local development
79
82
80
83
```bash
84
+
cd v2
81
85
npm ci
82
86
npm test
83
87
npx netlify dev
84
88
```
85
89
86
-
The test suite checks authentication helpers, password hashing, signed sessions, username rules, message cleaning, frontend syntax, site structure and the production migration guard.
90
+
The test suite checks authentication helpers, password hashing, signed sessions, username rules, message cleaning, context boundaries, frontend syntax and site structure.
87
91
88
92
## Privacy & safety notes
89
93
90
-
Chats are stored and visible to the administrator. The application warns users not to submit sensitive information, and chat content is sent to the configured model provider when generating a response. Credentials, user exports, conversations and production data must never be committed. Review [PRIVACY.md](PRIVACY.md) and [SECURITY.md](SECURITY.md) before deploying a backend change.
94
+
Chats are stored and visible to the administrator. The application warns users not to submit sensitive information, and chat content is sent to the configured model provider when generating a response. Credentials, user exports, conversations and production data must never be committed. Review [v2/PRIVACY.md](v2/PRIVACY.md) and [SECURITY.md](SECURITY.md) before deploying a backend change.
Report vulnerabilities privately to `jamieparr05@hotmail.com`. Do not open a public issue for authentication bypasses, setup takeover, stored conversation exposure, account blocking failures, provider-key exposure, or session weaknesses.
3
+
Report vulnerabilities privately to `jamieparr205@gmail.com`. Do not open a public issue for authentication bypasses, setup takeover, stored conversation exposure, context-pack exposure, account blocking failures, provider-key exposure, or session weaknesses.
4
4
5
-
Do not include live credentials or real user conversations in a report. Only the current `main` branch is supported.
5
+
Do not include live credentials, context packs, exports, or real user conversations in a report. Only the current `main` branch is supported.
0 commit comments