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.
Files changed (126) hide show
  1. {sp2react-0.1.0 → sp2react-0.1.1}/CHANGELOG.md +10 -0
  2. {sp2react-0.1.0/src/sp2react.egg-info → sp2react-0.1.1}/PKG-INFO +24 -4
  3. {sp2react-0.1.0 → sp2react-0.1.1}/README.md +23 -3
  4. {sp2react-0.1.0 → sp2react-0.1.1}/pyproject.toml +1 -1
  5. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/__init__.py +1 -1
  6. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/config.py +4 -1
  7. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/generate.py +3 -2
  8. {sp2react-0.1.0 → sp2react-0.1.1/src/sp2react.egg-info}/PKG-INFO +24 -4
  9. {sp2react-0.1.0 → sp2react-0.1.1}/LICENSE +0 -0
  10. {sp2react-0.1.0 → sp2react-0.1.1}/MANIFEST.in +0 -0
  11. {sp2react-0.1.0 → sp2react-0.1.1}/SECURITY.md +0 -0
  12. {sp2react-0.1.0 → sp2react-0.1.1}/setup.cfg +0 -0
  13. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/agents/__init__.py +0 -0
  14. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/agents/core.py +0 -0
  15. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/agents/prompts/dbmap.md +0 -0
  16. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/agents/prompts/fix.md +0 -0
  17. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/agents/prompts/handler.md +0 -0
  18. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/agents/prompts/page.md +0 -0
  19. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/agents/prompts/review.md +0 -0
  20. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/agents/prompts/spec.md +0 -0
  21. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/agents/tasks.py +0 -0
  22. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/analysis/__init__.py +0 -0
  23. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/analysis/aspx.py +0 -0
  24. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/analysis/behaviors.py +0 -0
  25. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/analysis/fields.py +0 -0
  26. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/analysis/inventory.py +0 -0
  27. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/analysis/jsscan.py +0 -0
  28. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/checks.py +0 -0
  29. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/cli.py +0 -0
  30. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/dbmap.py +0 -0
  31. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/llm/__init__.py +0 -0
  32. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/llm/providers.py +0 -0
  33. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/migrate.py +0 -0
  34. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/net.py +0 -0
  35. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/pipeline.py +0 -0
  36. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/__init__.py +0 -0
  37. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/rule_vectors.json +0 -0
  38. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/backend/app/__init__.py +0 -0
  39. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/backend/app/api.py +0 -0
  40. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/backend/app/auth.py +0 -0
  41. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/backend/app/custom/__init__.py +0 -0
  42. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/backend/app/main.py +0 -0
  43. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/backend/app/odata.py +0 -0
  44. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/backend/app/rules.py +0 -0
  45. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/backend/app/sp_repo.py +0 -0
  46. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/backend/app/sql_repo.py +0 -0
  47. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/backend/app/store.py +0 -0
  48. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/backend/requirements.txt +0 -0
  49. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/backend/tests/conftest.py +0 -0
  50. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/backend/tests/test_rule_vectors.py +0 -0
  51. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/index.html +0 -0
  52. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/package.json +0 -0
  53. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/scripts/check-rules.ts +0 -0
  54. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/api.ts +0 -0
  55. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/components/sp/Banner.tsx +0 -0
  56. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/components/sp/DataTable.tsx +0 -0
  57. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/components/sp/Form.tsx +0 -0
  58. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/components/sp/GenericPage.tsx +0 -0
  59. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/components/sp/Layout.tsx +0 -0
  60. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/components/sp/LegacyHtml.tsx +0 -0
  61. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/components/sp/ListView.tsx +0 -0
  62. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/components/sp/Tiles.tsx +0 -0
  63. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/components/sp/fields.tsx +0 -0
  64. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/custom/types.ts +0 -0
  65. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/main.tsx +0 -0
  66. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/runtime/format.ts +0 -0
  67. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/runtime/rules.ts +0 -0
  68. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/runtime/spec.ts +0 -0
  69. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/runtime/user.tsx +0 -0
  70. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/screens/LegacyRedirect.tsx +0 -0
  71. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/screens/ListFormScreen.tsx +0 -0
  72. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/styles/sp.css +0 -0
  73. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/src/vite-env.d.ts +0 -0
  74. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/tsconfig.json +0 -0
  75. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/scaffold/templates/frontend/vite.config.ts +0 -0
  76. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/sharepoint/__init__.py +0 -0
  77. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/sharepoint/client.py +0 -0
  78. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/sharepoint/extract.py +0 -0
  79. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/spec/__init__.py +0 -0
  80. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/spec/base.py +0 -0
  81. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/spec/coverage.py +0 -0
  82. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react/spec/model.py +0 -0
  83. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react.egg-info/SOURCES.txt +0 -0
  84. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react.egg-info/dependency_links.txt +0 -0
  85. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react.egg-info/entry_points.txt +0 -0
  86. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react.egg-info/requires.txt +0 -0
  87. {sp2react-0.1.0 → sp2react-0.1.1}/src/sp2react.egg-info/top_level.txt +0 -0
  88. {sp2react-0.1.0 → sp2react-0.1.1}/tests/conftest.py +0 -0
  89. {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/agent_responses/dbmap/mapping.json +0 -0
  90. {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/agent_responses/page/Dashboard.txt +0 -0
  91. {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/agent_responses/spec/Dashboard.json +0 -0
  92. {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/agent_responses/spec/VendorRequests-form.json +0 -0
  93. {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/files/Lists/VendorRequests/Attachments/2/customs-bond.pdf +0 -0
  94. {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/files/SiteAssets/css/dashboard.css +0 -0
  95. {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/files/SiteAssets/css/vendor-request.css +0 -0
  96. {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/files/SiteAssets/html/review-instructions.html +0 -0
  97. {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/files/SiteAssets/js/dashboard.js +0 -0
  98. {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/files/SiteAssets/js/jquery-1.12.4.min.js +0 -0
  99. {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/files/SiteAssets/js/jquery.SPServices-2014.02.min.js +0 -0
  100. {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/files/SiteAssets/js/vendor-request-form.js +0 -0
  101. {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/lists/ComplianceAlerts/fields.json +0 -0
  102. {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/lists/ComplianceAlerts/items.json +0 -0
  103. {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/lists/CostCenters/fields.json +0 -0
  104. {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/lists/CostCenters/items.json +0 -0
  105. {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/lists/Countries/fields.json +0 -0
  106. {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/lists/Countries/items.json +0 -0
  107. {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/lists/Departments/fields.json +0 -0
  108. {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/lists/Departments/items.json +0 -0
  109. {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/lists/VendorRequests/fields.json +0 -0
  110. {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/lists/VendorRequests/items.json +0 -0
  111. {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/pages/Lists/VendorRequests/DispForm.aspx +0 -0
  112. {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/pages/Lists/VendorRequests/EditForm.aspx +0 -0
  113. {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/pages/Lists/VendorRequests/NewForm.aspx +0 -0
  114. {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/pages/SitePages/Dashboard.aspx +0 -0
  115. {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/pages/SitePages/Dashboard.aspx.webparts.json +0 -0
  116. {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/rendered/SitePages/Dashboard.html +0 -0
  117. {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/site.json +0 -0
  118. {sp2react-0.1.0 → sp2react-0.1.1}/tests/fixtures/legacy-site/siteusers.json +0 -0
  119. {sp2react-0.1.0 → sp2react-0.1.1}/tests/migrated_db.py +0 -0
  120. {sp2react-0.1.0 → sp2react-0.1.1}/tests/mock_sharepoint.py +0 -0
  121. {sp2react-0.1.0 → sp2react-0.1.1}/tests/scripted_agents.py +0 -0
  122. {sp2react-0.1.0 → sp2react-0.1.1}/tests/test_agents.py +0 -0
  123. {sp2react-0.1.0 → sp2react-0.1.1}/tests/test_extract_inventory.py +0 -0
  124. {sp2react-0.1.0 → sp2react-0.1.1}/tests/test_network.py +0 -0
  125. {sp2react-0.1.0 → sp2react-0.1.1}/tests/test_pipeline.py +0 -0
  126. {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.0
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='mysql+pymysql://user:password@db-host:3306/sea'
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 pymysql && cp .env.example .env && uvicorn app.main:app
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='mysql+pymysql://user:password@db-host:3306/sea'
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 pymysql && cp .env.example .env && uvicorn app.main:app
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.0"
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"
@@ -5,7 +5,7 @@ Python API:
5
5
  p = Pipeline(load_config("sp2react.yaml"))
6
6
  p.run(pages=["SitePages/Dashboard.aspx"])
7
7
  """
8
- __version__ = "0.1.0"
8
+ __version__ = "0.1.1"
9
9
 
10
10
 
11
11
  def __getattr__(name):
@@ -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 # e.g. mysql+pymysql://user:password@db-host:3306/sea (read from the environment)
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=mysql+pymysql://user:password@db-host:3306/sea
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.0
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='mysql+pymysql://user:password@db-host:3306/sea'
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 pymysql && cp .env.example .env && uvicorn app.main:app
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