sp2react 0.1.0__tar.gz → 0.1.1__tar.gz
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.
- {sp2react-0.1.0 → sp2react-0.1.1}/CHANGELOG.md +10 -0
- {sp2react-0.1.0/src/sp2react.egg-info → sp2react-0.1.1}/PKG-INFO +24 -4
- {sp2react-0.1.0 → sp2react-0.1.1}/README.md +23 -3
- {sp2react-0.1.0 → sp2react-0.1.1}/pyproject.toml +1 -1
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/__init__.py +1 -1
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/config.py +4 -1
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/generate.py +3 -2
- {sp2react-0.1.0 → sp2react-0.1.1/src/sp2react.egg-info}/PKG-INFO +24 -4
- {sp2react-0.1.0 → sp2react-0.1.1}/LICENSE +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/MANIFEST.in +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/SECURITY.md +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/setup.cfg +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/agents/__init__.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/agents/core.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/agents/prompts/dbmap.md +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/agents/prompts/fix.md +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/agents/prompts/handler.md +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/agents/prompts/page.md +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/agents/prompts/review.md +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/agents/prompts/spec.md +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/agents/tasks.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/analysis/__init__.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/analysis/aspx.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/analysis/behaviors.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/analysis/fields.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/analysis/inventory.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/analysis/jsscan.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/checks.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/cli.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/dbmap.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/llm/__init__.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/llm/providers.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/migrate.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/net.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/pipeline.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/__init__.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/rule_vectors.json +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/backend/app/__init__.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/backend/app/api.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/backend/app/auth.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/backend/app/custom/__init__.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/backend/app/main.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/backend/app/odata.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/backend/app/rules.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/backend/app/sp_repo.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/backend/app/sql_repo.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/backend/app/store.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/backend/requirements.txt +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/backend/tests/conftest.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/backend/tests/test_rule_vectors.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/index.html +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/package.json +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/scripts/check-rules.ts +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/api.ts +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/components/sp/Banner.tsx +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/components/sp/DataTable.tsx +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/components/sp/Form.tsx +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/components/sp/GenericPage.tsx +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/components/sp/Layout.tsx +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/components/sp/LegacyHtml.tsx +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/components/sp/ListView.tsx +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/components/sp/Tiles.tsx +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/components/sp/fields.tsx +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/custom/types.ts +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/main.tsx +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/runtime/format.ts +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/runtime/rules.ts +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/runtime/spec.ts +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/runtime/user.tsx +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/screens/LegacyRedirect.tsx +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/screens/ListFormScreen.tsx +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/styles/sp.css +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/vite-env.d.ts +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/tsconfig.json +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/vite.config.ts +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/sharepoint/__init__.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/sharepoint/client.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/sharepoint/extract.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/spec/__init__.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/spec/base.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/spec/coverage.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/spec/model.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react.egg-info/SOURCES.txt +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react.egg-info/dependency_links.txt +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react.egg-info/entry_points.txt +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react.egg-info/requires.txt +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react.egg-info/top_level.txt +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/conftest.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/agent_responses/dbmap/mapping.json +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/agent_responses/page/Dashboard.txt +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/agent_responses/spec/Dashboard.json +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/agent_responses/spec/VendorRequests-form.json +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/files/Lists/VendorRequests/Attachments/2/customs-bond.pdf +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/files/SiteAssets/css/dashboard.css +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/files/SiteAssets/css/vendor-request.css +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/files/SiteAssets/html/review-instructions.html +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/files/SiteAssets/js/dashboard.js +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/files/SiteAssets/js/jquery-1.12.4.min.js +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/files/SiteAssets/js/jquery.SPServices-2014.02.min.js +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/files/SiteAssets/js/vendor-request-form.js +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/lists/ComplianceAlerts/fields.json +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/lists/ComplianceAlerts/items.json +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/lists/CostCenters/fields.json +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/lists/CostCenters/items.json +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/lists/Countries/fields.json +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/lists/Countries/items.json +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/lists/Departments/fields.json +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/lists/Departments/items.json +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/lists/VendorRequests/fields.json +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/lists/VendorRequests/items.json +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/pages/Lists/VendorRequests/DispForm.aspx +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/pages/Lists/VendorRequests/EditForm.aspx +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/pages/Lists/VendorRequests/NewForm.aspx +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/pages/SitePages/Dashboard.aspx +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/pages/SitePages/Dashboard.aspx.webparts.json +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/rendered/SitePages/Dashboard.html +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/site.json +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/siteusers.json +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/migrated_db.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/mock_sharepoint.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/scripted_agents.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/test_agents.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/test_extract_inventory.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/test_network.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/test_pipeline.py +0 -0
- {sp2react-0.1.0 → sp2react-0.1.1}/tests/ui_walkthrough.py +0 -0
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `sp2react` are documented here.
|
|
4
4
|
|
|
5
|
+
## [0.1.1] - 2026-10-29
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- End-to-end documentation in `docs/`: how it works, installation (Windows, JFrog), configuration reference, Bridger and other model providers, SQL Server / MySQL / PostgreSQL and the mapping file, a full walkthrough, command reference, the generated app and deployment, security, troubleshooting, Python API, coverage and limitations
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
- `sp2react init` template and the generated `.env.example` show SQL Server connection URLs and `database.schema_name`
|
|
12
|
+
- README: run the generated API with `uvicorn --env-file .env` (the app does not load `.env` by itself)
|
|
13
|
+
- CI: every GitHub Action pinned to a commit SHA; Scorecard uses an existing `ossf/scorecard-action` release
|
|
14
|
+
|
|
5
15
|
## [0.1.0] - 2026-10-29
|
|
6
16
|
|
|
7
17
|
First public release.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sp2react
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.1
|
|
4
4
|
Summary: AI-agent pipeline that converts classic SharePoint ASPX/jQuery list forms and pages into a React + FastAPI app on your existing database
|
|
5
5
|
Author: Karthikeyan Balasundaram
|
|
6
6
|
License: MIT
|
|
@@ -59,10 +59,13 @@ Plain code does everything mechanical. AI agents (Claude through your GitHub Cop
|
|
|
59
59
|
|
|
60
60
|
**No business data over HTTP:** in the default `database` mode, list items, attachments and people are never read from SharePoint, and every request is checked against the hosts in your config.
|
|
61
61
|
|
|
62
|
+
📖 **Full documentation: [docs/](https://github.com/karthikbd/sp2react/blob/main/docs/README.md)**: installation, configuration, Bridger, SQL Server / MySQL, an end-to-end walkthrough, command reference, the generated app, security, troubleshooting.
|
|
63
|
+
|
|
62
64
|
---
|
|
63
65
|
|
|
64
66
|
## Table of Contents
|
|
65
67
|
|
|
68
|
+
- [Documentation](#documentation)
|
|
66
69
|
- [Installation](#installation)
|
|
67
70
|
- [Quick Start](#quick-start)
|
|
68
71
|
- [Configuration](#configuration)
|
|
@@ -79,11 +82,28 @@ Plain code does everything mechanical. AI agents (Claude through your GitHub Cop
|
|
|
79
82
|
|
|
80
83
|
---
|
|
81
84
|
|
|
85
|
+
## Documentation
|
|
86
|
+
|
|
87
|
+
| Guide | |
|
|
88
|
+
|---|---|
|
|
89
|
+
| [How it works](https://github.com/karthikbd/sp2react/blob/main/docs/01-how-it-works.md) | stages, agents, data sources |
|
|
90
|
+
| [Installation](https://github.com/karthikbd/sp2react/blob/main/docs/02-installation.md) | Windows, corporate networks (JFrog), drivers, Node.js |
|
|
91
|
+
| [Configuration reference](https://github.com/karthikbd/sp2react/blob/main/docs/03-configuration.md) | every `sp2react.yaml` key and environment variable |
|
|
92
|
+
| [Model provider and Bridger](https://github.com/karthikbd/sp2react/blob/main/docs/04-model-provider.md) | Claude through Copilot Bridger, Anthropic, Azure OpenAI |
|
|
93
|
+
| [Your database](https://github.com/karthikbd/sp2react/blob/main/docs/05-database.md) | SQL Server, MySQL, PostgreSQL; `map-db`; the mapping file; reconcile |
|
|
94
|
+
| [End-to-end walkthrough](https://github.com/karthikbd/sp2react/blob/main/docs/06-walkthrough.md) | a site from start to deployed app |
|
|
95
|
+
| [Command reference](https://github.com/karthikbd/sp2react/blob/main/docs/07-commands.md) | every command and option, every file written |
|
|
96
|
+
| [The generated app](https://github.com/karthikbd/sp2react/blob/main/docs/08-generated-app.md) | layout, settings, roles, API, tests, deployment |
|
|
97
|
+
| [Security](https://github.com/karthikbd/sp2react/blob/main/docs/09-security.md) | what is read, sent and written |
|
|
98
|
+
| [Troubleshooting](https://github.com/karthikbd/sp2react/blob/main/docs/10-troubleshooting.md) | errors and fixes |
|
|
99
|
+
| [Python API](https://github.com/karthikbd/sp2react/blob/main/docs/11-python-api.md) | drive sp2react from your own tool |
|
|
100
|
+
| [Coverage and limitations](https://github.com/karthikbd/sp2react/blob/main/docs/12-limitations.md) | what converts and what does not |
|
|
101
|
+
|
|
82
102
|
## Installation
|
|
83
103
|
|
|
84
104
|
```bash
|
|
85
105
|
pip install "sp2react[mysql]" # MySQL / MariaDB tables
|
|
86
|
-
pip install "sp2react[mssql]" # SQL Server tables
|
|
106
|
+
pip install "sp2react[mssql]" # SQL Server tables (also needs Microsoft ODBC Driver 18)
|
|
87
107
|
pip install "sp2react[ntlm]" # add for on-premises Windows authentication
|
|
88
108
|
```
|
|
89
109
|
|
|
@@ -95,7 +115,7 @@ Python 3.10+. Node.js 20+ is needed to build the generated React app.
|
|
|
95
115
|
sp2react init # writes sp2react.yaml
|
|
96
116
|
export SP_USERNAME='CORP\me' SP_PASSWORD='...' # or SP_COOKIE / SP_TOKEN
|
|
97
117
|
export BRIDGER_TOKEN='...' # only if Bridger needs one
|
|
98
|
-
export SP2REACT_DB_URL='
|
|
118
|
+
export SP2REACT_DB_URL='mssql+pyodbc://user:password@db-host/SEA?driver=ODBC+Driver+18+for+SQL+Server' # or mysql+pymysql://...
|
|
99
119
|
|
|
100
120
|
sp2react doctor # checks SharePoint, lists Bridger's Claude models
|
|
101
121
|
sp2react run --page /sites/SEA/SitePages/Dashboard.aspx --until spec
|
|
@@ -163,7 +183,7 @@ To check the earlier migration, set `security.sharepoint_item_reads: true`. `rec
|
|
|
163
183
|
## The generated app
|
|
164
184
|
|
|
165
185
|
```bash
|
|
166
|
-
cd converted-app/backend && pip install -r requirements.txt
|
|
186
|
+
cd converted-app/backend && pip install -r requirements.txt pyodbc && cp .env.example .env && uvicorn app.main:app --env-file .env
|
|
167
187
|
cd converted-app/frontend && npm install && npm run dev
|
|
168
188
|
```
|
|
169
189
|
|
|
@@ -11,10 +11,13 @@ Plain code does everything mechanical. AI agents (Claude through your GitHub Cop
|
|
|
11
11
|
|
|
12
12
|
**No business data over HTTP:** in the default `database` mode, list items, attachments and people are never read from SharePoint, and every request is checked against the hosts in your config.
|
|
13
13
|
|
|
14
|
+
📖 **Full documentation: [docs/](https://github.com/karthikbd/sp2react/blob/main/docs/README.md)**: installation, configuration, Bridger, SQL Server / MySQL, an end-to-end walkthrough, command reference, the generated app, security, troubleshooting.
|
|
15
|
+
|
|
14
16
|
---
|
|
15
17
|
|
|
16
18
|
## Table of Contents
|
|
17
19
|
|
|
20
|
+
- [Documentation](#documentation)
|
|
18
21
|
- [Installation](#installation)
|
|
19
22
|
- [Quick Start](#quick-start)
|
|
20
23
|
- [Configuration](#configuration)
|
|
@@ -31,11 +34,28 @@ Plain code does everything mechanical. AI agents (Claude through your GitHub Cop
|
|
|
31
34
|
|
|
32
35
|
---
|
|
33
36
|
|
|
37
|
+
## Documentation
|
|
38
|
+
|
|
39
|
+
| Guide | |
|
|
40
|
+
|---|---|
|
|
41
|
+
| [How it works](https://github.com/karthikbd/sp2react/blob/main/docs/01-how-it-works.md) | stages, agents, data sources |
|
|
42
|
+
| [Installation](https://github.com/karthikbd/sp2react/blob/main/docs/02-installation.md) | Windows, corporate networks (JFrog), drivers, Node.js |
|
|
43
|
+
| [Configuration reference](https://github.com/karthikbd/sp2react/blob/main/docs/03-configuration.md) | every `sp2react.yaml` key and environment variable |
|
|
44
|
+
| [Model provider and Bridger](https://github.com/karthikbd/sp2react/blob/main/docs/04-model-provider.md) | Claude through Copilot Bridger, Anthropic, Azure OpenAI |
|
|
45
|
+
| [Your database](https://github.com/karthikbd/sp2react/blob/main/docs/05-database.md) | SQL Server, MySQL, PostgreSQL; `map-db`; the mapping file; reconcile |
|
|
46
|
+
| [End-to-end walkthrough](https://github.com/karthikbd/sp2react/blob/main/docs/06-walkthrough.md) | a site from start to deployed app |
|
|
47
|
+
| [Command reference](https://github.com/karthikbd/sp2react/blob/main/docs/07-commands.md) | every command and option, every file written |
|
|
48
|
+
| [The generated app](https://github.com/karthikbd/sp2react/blob/main/docs/08-generated-app.md) | layout, settings, roles, API, tests, deployment |
|
|
49
|
+
| [Security](https://github.com/karthikbd/sp2react/blob/main/docs/09-security.md) | what is read, sent and written |
|
|
50
|
+
| [Troubleshooting](https://github.com/karthikbd/sp2react/blob/main/docs/10-troubleshooting.md) | errors and fixes |
|
|
51
|
+
| [Python API](https://github.com/karthikbd/sp2react/blob/main/docs/11-python-api.md) | drive sp2react from your own tool |
|
|
52
|
+
| [Coverage and limitations](https://github.com/karthikbd/sp2react/blob/main/docs/12-limitations.md) | what converts and what does not |
|
|
53
|
+
|
|
34
54
|
## Installation
|
|
35
55
|
|
|
36
56
|
```bash
|
|
37
57
|
pip install "sp2react[mysql]" # MySQL / MariaDB tables
|
|
38
|
-
pip install "sp2react[mssql]" # SQL Server tables
|
|
58
|
+
pip install "sp2react[mssql]" # SQL Server tables (also needs Microsoft ODBC Driver 18)
|
|
39
59
|
pip install "sp2react[ntlm]" # add for on-premises Windows authentication
|
|
40
60
|
```
|
|
41
61
|
|
|
@@ -47,7 +67,7 @@ Python 3.10+. Node.js 20+ is needed to build the generated React app.
|
|
|
47
67
|
sp2react init # writes sp2react.yaml
|
|
48
68
|
export SP_USERNAME='CORP\me' SP_PASSWORD='...' # or SP_COOKIE / SP_TOKEN
|
|
49
69
|
export BRIDGER_TOKEN='...' # only if Bridger needs one
|
|
50
|
-
export SP2REACT_DB_URL='
|
|
70
|
+
export SP2REACT_DB_URL='mssql+pyodbc://user:password@db-host/SEA?driver=ODBC+Driver+18+for+SQL+Server' # or mysql+pymysql://...
|
|
51
71
|
|
|
52
72
|
sp2react doctor # checks SharePoint, lists Bridger's Claude models
|
|
53
73
|
sp2react run --page /sites/SEA/SitePages/Dashboard.aspx --until spec
|
|
@@ -115,7 +135,7 @@ To check the earlier migration, set `security.sharepoint_item_reads: true`. `rec
|
|
|
115
135
|
## The generated app
|
|
116
136
|
|
|
117
137
|
```bash
|
|
118
|
-
cd converted-app/backend && pip install -r requirements.txt
|
|
138
|
+
cd converted-app/backend && pip install -r requirements.txt pyodbc && cp .env.example .env && uvicorn app.main:app --env-file .env
|
|
119
139
|
cd converted-app/frontend && npm install && npm run dev
|
|
120
140
|
```
|
|
121
141
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "sp2react"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.1"
|
|
8
8
|
authors = [{name = "Karthikeyan Balasundaram"}]
|
|
9
9
|
description = "AI-agent pipeline that converts classic SharePoint ASPX/jQuery list forms and pages into a React + FastAPI app on your existing database"
|
|
10
10
|
readme = "README.md"
|
|
@@ -163,7 +163,10 @@ pipeline:
|
|
|
163
163
|
# sqlite: sp2react migrates the items itself | sharepoint: API uses the live lists
|
|
164
164
|
|
|
165
165
|
database:
|
|
166
|
-
url_env: SP2REACT_DB_URL #
|
|
166
|
+
url_env: SP2REACT_DB_URL # read from the environment, e.g.
|
|
167
|
+
# mssql+pyodbc://@db-host/SEA?driver=ODBC+Driver+18+for+SQL+Server&trusted_connection=yes
|
|
168
|
+
# mysql+pymysql://user:password@db-host:3306/sea
|
|
169
|
+
# schema_name: dbo # schema holding the migrated tables, if not the default
|
|
167
170
|
mapping: ./db-mapping.json # drafted by `sp2react map-db`, reviewed by you
|
|
168
171
|
|
|
169
172
|
security:
|
|
@@ -208,8 +208,9 @@ def generated_tests(specs: list[Spec], seed_counts: dict[str, int], data_source:
|
|
|
208
208
|
|
|
209
209
|
ENV_EXAMPLE = """# Copy to .env (or set in your service configuration). Never commit real values.
|
|
210
210
|
DATA_SOURCE=__SOURCE__
|
|
211
|
-
# database: your existing tables
|
|
212
|
-
DB_URL=
|
|
211
|
+
# database: your existing tables (SQLAlchemy URL)
|
|
212
|
+
DB_URL=mssql+pyodbc://user:password@db-host/SEA?driver=ODBC+Driver+18+for+SQL+Server
|
|
213
|
+
# DB_URL=mysql+pymysql://user:password@db-host:3306/sea
|
|
213
214
|
MAPPING_FILE=./mapping.json
|
|
214
215
|
# auth: dev (X-User header, local only) | header (identity header from your gateway)
|
|
215
216
|
AUTH_MODE=dev
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sp2react
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.1
|
|
4
4
|
Summary: AI-agent pipeline that converts classic SharePoint ASPX/jQuery list forms and pages into a React + FastAPI app on your existing database
|
|
5
5
|
Author: Karthikeyan Balasundaram
|
|
6
6
|
License: MIT
|
|
@@ -59,10 +59,13 @@ Plain code does everything mechanical. AI agents (Claude through your GitHub Cop
|
|
|
59
59
|
|
|
60
60
|
**No business data over HTTP:** in the default `database` mode, list items, attachments and people are never read from SharePoint, and every request is checked against the hosts in your config.
|
|
61
61
|
|
|
62
|
+
📖 **Full documentation: [docs/](https://github.com/karthikbd/sp2react/blob/main/docs/README.md)**: installation, configuration, Bridger, SQL Server / MySQL, an end-to-end walkthrough, command reference, the generated app, security, troubleshooting.
|
|
63
|
+
|
|
62
64
|
---
|
|
63
65
|
|
|
64
66
|
## Table of Contents
|
|
65
67
|
|
|
68
|
+
- [Documentation](#documentation)
|
|
66
69
|
- [Installation](#installation)
|
|
67
70
|
- [Quick Start](#quick-start)
|
|
68
71
|
- [Configuration](#configuration)
|
|
@@ -79,11 +82,28 @@ Plain code does everything mechanical. AI agents (Claude through your GitHub Cop
|
|
|
79
82
|
|
|
80
83
|
---
|
|
81
84
|
|
|
85
|
+
## Documentation
|
|
86
|
+
|
|
87
|
+
| Guide | |
|
|
88
|
+
|---|---|
|
|
89
|
+
| [How it works](https://github.com/karthikbd/sp2react/blob/main/docs/01-how-it-works.md) | stages, agents, data sources |
|
|
90
|
+
| [Installation](https://github.com/karthikbd/sp2react/blob/main/docs/02-installation.md) | Windows, corporate networks (JFrog), drivers, Node.js |
|
|
91
|
+
| [Configuration reference](https://github.com/karthikbd/sp2react/blob/main/docs/03-configuration.md) | every `sp2react.yaml` key and environment variable |
|
|
92
|
+
| [Model provider and Bridger](https://github.com/karthikbd/sp2react/blob/main/docs/04-model-provider.md) | Claude through Copilot Bridger, Anthropic, Azure OpenAI |
|
|
93
|
+
| [Your database](https://github.com/karthikbd/sp2react/blob/main/docs/05-database.md) | SQL Server, MySQL, PostgreSQL; `map-db`; the mapping file; reconcile |
|
|
94
|
+
| [End-to-end walkthrough](https://github.com/karthikbd/sp2react/blob/main/docs/06-walkthrough.md) | a site from start to deployed app |
|
|
95
|
+
| [Command reference](https://github.com/karthikbd/sp2react/blob/main/docs/07-commands.md) | every command and option, every file written |
|
|
96
|
+
| [The generated app](https://github.com/karthikbd/sp2react/blob/main/docs/08-generated-app.md) | layout, settings, roles, API, tests, deployment |
|
|
97
|
+
| [Security](https://github.com/karthikbd/sp2react/blob/main/docs/09-security.md) | what is read, sent and written |
|
|
98
|
+
| [Troubleshooting](https://github.com/karthikbd/sp2react/blob/main/docs/10-troubleshooting.md) | errors and fixes |
|
|
99
|
+
| [Python API](https://github.com/karthikbd/sp2react/blob/main/docs/11-python-api.md) | drive sp2react from your own tool |
|
|
100
|
+
| [Coverage and limitations](https://github.com/karthikbd/sp2react/blob/main/docs/12-limitations.md) | what converts and what does not |
|
|
101
|
+
|
|
82
102
|
## Installation
|
|
83
103
|
|
|
84
104
|
```bash
|
|
85
105
|
pip install "sp2react[mysql]" # MySQL / MariaDB tables
|
|
86
|
-
pip install "sp2react[mssql]" # SQL Server tables
|
|
106
|
+
pip install "sp2react[mssql]" # SQL Server tables (also needs Microsoft ODBC Driver 18)
|
|
87
107
|
pip install "sp2react[ntlm]" # add for on-premises Windows authentication
|
|
88
108
|
```
|
|
89
109
|
|
|
@@ -95,7 +115,7 @@ Python 3.10+. Node.js 20+ is needed to build the generated React app.
|
|
|
95
115
|
sp2react init # writes sp2react.yaml
|
|
96
116
|
export SP_USERNAME='CORP\me' SP_PASSWORD='...' # or SP_COOKIE / SP_TOKEN
|
|
97
117
|
export BRIDGER_TOKEN='...' # only if Bridger needs one
|
|
98
|
-
export SP2REACT_DB_URL='
|
|
118
|
+
export SP2REACT_DB_URL='mssql+pyodbc://user:password@db-host/SEA?driver=ODBC+Driver+18+for+SQL+Server' # or mysql+pymysql://...
|
|
99
119
|
|
|
100
120
|
sp2react doctor # checks SharePoint, lists Bridger's Claude models
|
|
101
121
|
sp2react run --page /sites/SEA/SitePages/Dashboard.aspx --until spec
|
|
@@ -163,7 +183,7 @@ To check the earlier migration, set `security.sharepoint_item_reads: true`. `rec
|
|
|
163
183
|
## The generated app
|
|
164
184
|
|
|
165
185
|
```bash
|
|
166
|
-
cd converted-app/backend && pip install -r requirements.txt
|
|
186
|
+
cd converted-app/backend && pip install -r requirements.txt pyodbc && cp .env.example .env && uvicorn app.main:app --env-file .env
|
|
167
187
|
cd converted-app/frontend && npm install && npm run dev
|
|
168
188
|
```
|
|
169
189
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/backend/app/custom/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/backend/tests/test_rule_vectors.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/scripts/check-rules.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/custom/types.ts
RENAMED
|
File without changes
|
|
File without changes
|
{sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/runtime/format.ts
RENAMED
|
File without changes
|
{sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/runtime/rules.ts
RENAMED
|
File without changes
|
{sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/runtime/spec.ts
RENAMED
|
File without changes
|
{sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/runtime/user.tsx
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/styles/sp.css
RENAMED
|
File without changes
|
{sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/vite-env.d.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/agent_responses/spec/VendorRequests-form.json
RENAMED
|
File without changes
|
|
File without changes
|
{sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/files/SiteAssets/css/dashboard.css
RENAMED
|
File without changes
|
{sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/files/SiteAssets/css/vendor-request.css
RENAMED
|
File without changes
|
|
File without changes
|
{sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/files/SiteAssets/js/dashboard.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/lists/ComplianceAlerts/fields.json
RENAMED
|
File without changes
|
{sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/lists/ComplianceAlerts/items.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/lists/VendorRequests/fields.json
RENAMED
|
File without changes
|
{sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/lists/VendorRequests/items.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/pages/Lists/VendorRequests/NewForm.aspx
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/rendered/SitePages/Dashboard.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|