Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
291 commits
Select commit Hold shift + click to select a range
7c94592
Heroku deployment
notprowler May 19, 2025
f5b4ca8
Procfile changes
notprowler May 19, 2025
fa49a11
fixed requirements.txt
notprowler May 19, 2025
5917fb1
Heroku debug
notprowler May 19, 2025
cf2d22f
debug v2
notprowler May 19, 2025
df1618d
made it so tables aren't created on load or reload
crosve May 19, 2025
1a41f0e
gor rid of permissions we didn;t need for google chrome extension
crosve May 19, 2025
0025b09
Merge pull request #12 from angvit/logo
crosve May 19, 2025
ddd808c
Merge branch 'main' of https://github.com/angvit/Content-Rediscovery-…
notprowler May 20, 2025
6ce6347
Fix: bind to heroku PORT to avoid R10 error
notprowler May 20, 2025
93f33fb
signup button
notprowler May 20, 2025
dde0946
Changed Backend URL links
notprowler May 20, 2025
28ac16a
HOT FIX: Cors origins
notprowler May 20, 2025
8f0e65d
adding PyJWT
notprowler May 20, 2025
9aa6f97
removing jwt
notprowler May 20, 2025
518dcfd
Fixed login signup
notprowler May 20, 2025
2cc83c3
fix: Signup button appear when logged in
notprowler May 20, 2025
9839cc5
Update README.md
crosve May 20, 2025
d85a564
chrome extension is now connected to the deployed front and backend
crosve May 20, 2025
8e8b1e6
got rid of the alert for personal testing
crosve May 20, 2025
234a18e
last minute changes to make it more responsive
crosve May 20, 2025
53bb18c
removing unused files and fixing imports
angvit May 20, 2025
e687807
frontend signup button no longer displaying
crosve May 23, 2025
674bd33
Merge branch 'main' of https://github.com/angvit/AI-Content-Curator
crosve May 23, 2025
2c3f761
Cookies logic on chrome extension repllaced with chromes identity per…
crosve May 24, 2025
43bdedd
Update README.md
crosve May 24, 2025
3da65be
refactored some code for local setup on macbook
crosve May 26, 2025
917e892
Merge pull request #1 from crosve/staging
crosve May 26, 2025
2e5760e
toaster is working again
crosve May 26, 2025
f2bff41
laoding chrome bar and message
crosve May 26, 2025
a38a42c
Merge pull request #2 from crosve/staging
crosve Jun 1, 2025
03893f1
fixed some text area logic and comments not get sent to the backend
crosve Jun 1, 2025
6931bc4
saving the content and sorting based on dates
crosve Jun 1, 2025
fcfa884
Merge pull request #3 from crosve/staging
crosve Jun 1, 2025
fcd06a4
time stamps are getting converted to lcoal time now
crosve Jun 1, 2025
7792f4d
solution to utc to local time conversion done
crosve Jun 1, 2025
be8b38f
untabbing and tabbing functionality done
crosve Jun 1, 2025
59931c0
Merge pull request #4 from crosve/staging
crosve Jun 1, 2025
aa0f08c
alembic logic has been added in
crosve Jun 9, 2025
0e14f6a
Merge pull request #5 from crosve/staging
crosve Jun 9, 2025
0510c93
Update README.md
crosve Jun 10, 2025
4478948
settings tab started
crosve Jun 14, 2025
46d05a7
Merge pull request #6 from crosve/staging
crosve Jun 14, 2025
85c219c
profile page and settings tab semi complete, little issue with hashing
crosve Jun 15, 2025
0fae323
Merge pull request #7 from crosve/staging
crosve Jun 15, 2025
3157254
fixed password update issue for users
crosve Jun 16, 2025
8f4bc13
Merge pull request #8 from crosve/staging
crosve Jun 16, 2025
d422c9a
notebook icon added
crosve Jun 17, 2025
3a70d64
centering is done
crosve Jun 18, 2025
22e2cf8
notes pop over in place
crosve Jun 18, 2025
f99734c
updating notes on the webapp is done
crosve Jun 19, 2025
da519f7
Merge pull request #9 from crosve/staging
crosve Jun 19, 2025
b5cae6b
small changes on the layout
crosve Jun 21, 2025
e4c3252
Merge pull request #10 from crosve/staging
crosve Jun 22, 2025
51f5c36
unread tab implemented
crosve Jun 24, 2025
fcce65b
got rid us userParam
crosve Jun 24, 2025
e5e25dc
Merge pull request #11 from crosve/staging
crosve Jun 24, 2025
02b9cbf
some DB configs and chrome extension
crosve Jun 25, 2025
56f0f53
Merge pull request #12 from crosve/staging
crosve Jun 26, 2025
fbd3a19
some frontend changes as well
crosve Jun 29, 2025
d8bacd5
got rid of the rag pipeline requirements.txt
crosve Jun 29, 2025
5281ae2
Merge pull request #13 from crosve/staging
crosve Jun 29, 2025
7aabe78
google auth for signup in progress
crosve Jul 1, 2025
408e14c
google login is in place
crosve Jul 3, 2025
8879d0b
Merge pull request #14 from crosve/staging
crosve Jul 4, 2025
d48e2fb
ams s3 storage in palce
crosve Jul 6, 2025
b5f7880
reorganzing some files and folders
crosve Jul 7, 2025
3c64c1b
alot of reactoring and auth protectiong for our cookies variables
crosve Jul 7, 2025
5c6009e
new BookmarkLayout wrapper
crosve Jul 7, 2025
e69e3ca
Merge pull request #15 from crosve/staging
crosve Jul 7, 2025
75a9088
fixed chrome extensuion error
crosve Jul 7, 2025
0c50026
Merge pull request #16 from crosve/staging
crosve Jul 7, 2025
8f16baf
new config to expore client keys to servers
crosve Jul 7, 2025
140ec99
config changes
crosve Jul 7, 2025
c75cadf
Merge pull request #17 from crosve/staging
crosve Jul 7, 2025
5f83c71
some config changes
crosve Jul 8, 2025
118eddb
fixed bigger screen shift between read and unread tabs
crosve Jul 8, 2025
a38a08e
connecting google if you didn't signup with google
crosve Jul 8, 2025
bd4fb8e
new folder for future refrence
crosve Jul 8, 2025
7814aad
Merge pull request #18 from crosve/staging
crosve Jul 8, 2025
2a9ef4c
animation in the settings open and close for each tab
crosve Jul 9, 2025
8803790
Update README.md
crosve Jul 9, 2025
23dcd2e
alembic logic and folder schema
crosve Jul 10, 2025
9874a53
Merge pull request #19 from crosve/staging
crosve Jul 10, 2025
3021c14
login error with full profile_path
crosve Jul 10, 2025
58b4191
folder initial ui design done
crosve Jul 10, 2025
0dabadd
Merge pull request #20 from crosve/staging
crosve Jul 10, 2025
3ab050a
logic for the folder
crosve Jul 10, 2025
3961f7c
added in the create folder logic and now adding in the ability to add…
crosve Jul 11, 2025
96a8e18
Merge pull request #21 from crosve/staging
crosve Jul 11, 2025
a928568
first version of folder creation added
crosve Jul 12, 2025
7093321
added in folder breadcrumb
crosve Jul 12, 2025
831c174
Merge pull request #22 from crosve/staging
crosve Jul 12, 2025
0c56b89
positioning of the folders popup card
crosve Jul 13, 2025
7fd97d3
Merge pull request #23 from crosve/staging
crosve Jul 14, 2025
25ac494
some reconfiguration errors for the chrome design
crosve Jul 15, 2025
142999e
google auth and users folder now shown on the chrome extension
crosve Jul 16, 2025
51df87b
folder saving directly on chrome extension is working
crosve Jul 16, 2025
024adb1
getting chrome extension up for prod testing
crosve Jul 16, 2025
5e415f9
Merge pull request #24 from crosve/staging
crosve Jul 16, 2025
071046c
chrome extesnion fixes to get rid of unprocsibale entity error in the…
crosve Jul 17, 2025
1a333c5
Merge pull request #25 from crosve/staging
crosve Jul 17, 2025
117e0d7
some backend changes
crosve Jul 17, 2025
5df9f3a
some revisions to the deployed chrome extension
crosve Jul 17, 2025
1524663
Merge pull request #26 from crosve/staging
crosve Jul 17, 2025
326c075
google login issue when amazon aws s3 url is empty
crosve Jul 18, 2025
9c9182e
Merge pull request #27 from crosve/staging
crosve Jul 18, 2025
ab75c94
solved issue with google signin prefixed url
crosve Jul 18, 2025
03a5f8f
backend fixes to align with bookmark data parsing
crosve Jul 19, 2025
7532bbf
Merge pull request #28 from crosve/staging
crosve Jul 19, 2025
7d47cce
Update README.md
crosve Jul 21, 2025
a6f4cdf
migrating to fastapi routers
crosve Jul 21, 2025
50648ed
fixing alembic history and reformatted landing page
crosve Jul 21, 2025
c92fcc8
fixing alembic issue in env.py
crosve Jul 21, 2025
fe80d23
Merge branch 'staging' of https://github.com/crosve/Csphere into staging
crosve Jul 21, 2025
eb77e0e
Merge pull request #31 from crosve/staging
crosve Jul 21, 2025
438b78f
alembic.ini
tanaijafair Jul 21, 2025
962d59b
alembic.ini merge conflict
tanaijafair Jul 21, 2025
6ea72a0
user and folder routers added to the backend
crosve Jul 23, 2025
4db8353
backend refactored into routers
crosve Jul 23, 2025
6d610c2
cleaned up imports for router files
crosve Jul 23, 2025
279b90b
Merge pull request #33 from crosve/staging
crosve Jul 23, 2025
7095d7b
got rid of unused imports from main.py
crosve Jul 23, 2025
61022c9
small changes
crosve Jul 23, 2025
91f3e55
chrome setup initial ui
crosve Jul 24, 2025
b454d0c
Merge pull request #34 from crosve/staging
crosve Jul 24, 2025
e43b071
new link layout
crosve Jul 24, 2025
f8a5a85
Merge pull request #35 from crosve/staging
crosve Jul 24, 2025
a04f7fd
instruction updated
crosve Jul 24, 2025
fcf6b57
Merge pull request #36 from crosve/staging
crosve Jul 24, 2025
075787e
adding in logegrs for the app
crosve Jul 24, 2025
b9844e8
user router has logging statments now
crosve Jul 25, 2025
4bf99e6
landing page redesign v1
crosve Jul 25, 2025
4a6bddb
footer layout and more padding y for headers
crosve Jul 25, 2025
ce6263f
Merge pull request #37 from crosve/staging
crosve Jul 25, 2025
b0cf76a
Merge branch 'main' of github.com:crosve/Csphere
tanaijafair Jul 25, 2025
0e8fcd5
new open model for each bookmark card component
crosve Jul 25, 2025
4b03db0
Merge pull request #38 from crosve/staging
crosve Jul 25, 2025
9cda265
some small margin and padding fixes
crosve Jul 26, 2025
4cdb3d1
Merge pull request #41 from crosve/staging
crosve Jul 26, 2025
f335cea
added in the favicon
crosve Jul 26, 2025
30c8a25
Merge pull request #43 from crosve/staging
crosve Jul 26, 2025
26bde26
setup for github workflow
crosve Jul 28, 2025
18e7417
Merge pull request #44 from crosve/workflows
crosve Jul 28, 2025
b1da79c
redesign v1 for homepage
crosve Jul 28, 2025
fa33a06
frontend redesign complete, just need to work on the color pallettes
crosve Jul 29, 2025
0485c1f
Merge pull request #45 from crosve/ui
crosve Jul 29, 2025
312a6ea
Merge branch 'main' of github.com:crosve/Csphere into issue32
tanaijafair Jul 29, 2025
3f7151f
more frontend work to match the design from v0
crosve Jul 29, 2025
c7a1175
adding github workflows yaml files
crosve Jul 29, 2025
7ae3b11
fixed spelling mistakes in yamnl file
crosve Jul 29, 2025
1795018
Merge pull request #46 from crosve/staging
crosve Jul 29, 2025
10a5db3
Merge pull request #47 from crosve/ui
crosve Jul 29, 2025
25ac6aa
fixing production yaml to run on push main branch
crosve Jul 29, 2025
9c4adc6
added in chrome extension html extraction logic
crosve Jul 30, 2025
16b0dc6
some changes to the prompt to help improve the AI summary
crosve Jul 30, 2025
81836a8
merging in any updated ui changes in the ui branch
crosve Jul 30, 2025
882f0e8
Merge pull request #48 from crosve/staging
crosve Jul 30, 2025
7831cb8
Merge branch 'main' of github.com:crosve/Csphere into issue32
tanaijafair Jul 30, 2025
97f35ef
Share popup with Gmail and link copying
tanaijafair Jul 30, 2025
777a9c9
Merge pull request #49 from crosve/issue32
crosve Aug 1, 2025
9eb9cdc
More modular code + alerts for options coming soon when clicked
tanaijafair Aug 1, 2025
39fce7e
Attempting to fix failed run
tanaijafair Aug 1, 2025
2816d8b
new chrome etxnesion ui with addtional tabs like recents and folders
crosve Aug 1, 2025
94a5912
fixed the search bar error
crosve Aug 6, 2025
4517e45
increased width of share model
crosve Aug 6, 2025
99c46a9
fixing merge conflicts
crosve Aug 6, 2025
06b499d
small refactor of the sharemodel file
crosve Aug 6, 2025
193ef63
adding v1 for category tables
crosve Aug 7, 2025
6abe4f0
added categorization that shreya implemented
crosve Aug 7, 2025
c330f56
categorization synced up with the frontend
crosve Aug 7, 2025
e4222aa
expansion models not have the same tags
crosve Aug 7, 2025
3f70aba
fixed issue where recents don't show up if not in a folder
crosve Aug 8, 2025
3bd894b
work for auth with jwt token
crosve Aug 8, 2025
bad9df5
Merge pull request #51 from crosve/staging
crosve Aug 8, 2025
abe7c61
Messages button added + Automatic copy link for Slack, Instagram, and…
tanaijafair Aug 12, 2025
2d92bed
implementing categorization with tiptops apis
crosve Aug 13, 2025
5ac5477
Helper function for Instagram and Slack redirect
tanaijafair Aug 13, 2025
fdecb16
saving all changes made implementing tiptops engine
crosve Aug 14, 2025
2a3cd16
Merge pull request #52 from crosve/staging
crosve Aug 14, 2025
0529227
adding in collections page
crosve Aug 14, 2025
0f9c540
Merge pull request #53 from crosve/staging
crosve Aug 14, 2025
94817ec
getting rid of collections tabs
crosve Aug 14, 2025
8bd0a5c
merging in changes
crosve Aug 14, 2025
5eeaead
Merge pull request #54 from crosve/staging
crosve Aug 14, 2025
affed6f
fixing chrome login api mismatch
crosve Aug 15, 2025
441d7da
Merge pull request #55 from crosve/issue32
crosve Aug 15, 2025
89edcae
Merge pull request #56 from crosve/staging
crosve Aug 15, 2025
5089727
folder delete logic in place
crosve Aug 18, 2025
0910f72
sorting works for folder section
crosve Aug 18, 2025
8aee2ec
cleaning up some folder frontend logic code
crosve Aug 18, 2025
9d55751
small changes
crosve Aug 19, 2025
1db1ffb
base case with empty categories
crosve Aug 19, 2025
ceb60a2
fixed python version in yaml file for heroku deployment
crosve Aug 19, 2025
859460b
Merge pull request #58 from crosve/staging
crosve Aug 19, 2025
e6a2ff3
renamed the suffix for heroku yaml file and added in what branch to d…
crosve Aug 19, 2025
60d7af2
Merge branch 'main' of https://github.com/crosve/Csphere
crosve Aug 19, 2025
cd504e0
installing heroku cli prior to deploying to heroku
crosve Aug 19, 2025
019e588
changed heroku to main branch
crosve Aug 19, 2025
0f5247b
specefying only the backend folder should be deployed
crosve Aug 19, 2025
e338140
cursor pagnation v1 in place
crosve Aug 19, 2025
40e5e57
Merge pull request #59 from crosve/staging
crosve Aug 20, 2025
530ce1b
fixed loading issue for unread bookmarks
crosve Aug 20, 2025
ebcb504
unread tab for fetching bookmarks fixed and now shows categories just…
crosve Aug 20, 2025
bd69543
some small big fixes for the search api call
crosve Aug 20, 2025
b4ce8bb
Merge pull request #62 from crosve/staging
crosve Aug 20, 2025
64c3294
golang code
crosve Aug 26, 2025
63783b9
some work, getting ready to transfer over to message queue architecture
crosve Oct 8, 2025
d53b619
adding in new worker for csphere categorization
crosve Oct 14, 2025
eefb1f9
v1 for worker done
crosve Oct 15, 2025
48bee16
pushiong new changes
crosve Oct 16, 2025
f61907a
Merge pull request #64 from crosve/golang
crosve Oct 16, 2025
d26f639
remocing worker folder from main repo
crosve Oct 16, 2025
7a63e51
changes in saving bookmarks
crosve Oct 16, 2025
c86b1ef
changes in saving bookmarks
crosve Oct 16, 2025
9f6c886
saftey precaution
crosve Oct 22, 2025
7c1fe37
removing secrets
crosve Oct 22, 2025
1087ae6
changes in saving bookmarks
crosve Oct 16, 2025
65a1afe
merge conflict
crosve Oct 22, 2025
b341d5b
docker file removed
crosve Oct 22, 2025
f3b9554
Merge branch 'main' of https://github.com/crosve/Csphere
crosve Oct 22, 2025
42f4e7e
added uv package manager and openrouter integration
angvit Oct 30, 2025
49be8f1
some changes
crosve Nov 4, 2025
28f9759
pushing changes made at cafe - database changes as well
crosve Nov 4, 2025
e7979cd
refactoring ContentEmbeddingManager to follow srp, fixed routing to a…
angvit Nov 4, 2025
5b64233
adding in selecting bookmarks
crosve Nov 5, 2025
61249e3
filter on frontend side is working
crosve Nov 7, 2025
1545331
border outline and paddin
crosve Nov 7, 2025
af77b24
Change live app URL to csphere.io
crosve Nov 7, 2025
bae6f9f
fixing local issue for chrome extension and api route
crosve Nov 7, 2025
a41b53d
added JSON structure for open router response
crosve Nov 7, 2025
7069609
small change to activate redployment
crosve Nov 7, 2025
dc3d984
added the category filter for the unread tabs
crosve Nov 7, 2025
de4e83b
adding new changes up
crosve Nov 10, 2025
64ef1ae
pushing changes made at cafe - database changes as well
crosve Nov 4, 2025
254e21c
adding in selecting bookmarks
crosve Nov 5, 2025
7fa4001
filter on frontend side is working
crosve Nov 7, 2025
31bdfc3
border outline and paddin
crosve Nov 7, 2025
76a938a
fixing local issue for chrome extension and api route
crosve Nov 7, 2025
5158432
added JSON structure for open router response
crosve Nov 7, 2025
914eab4
small change to activate redployment
crosve Nov 7, 2025
ea479ec
added the category filter for the unread tabs
crosve Nov 7, 2025
88ee80c
adding new changes up
crosve Nov 10, 2025
b9b66b3
Merge remote-tracking branch 'origin/refactor'
angvit Nov 11, 2025
d57e0f5
changes to match new open router and queue changes
crosve Nov 11, 2025
f67abb1
merging in recent queue changes
crosve Nov 12, 2025
3d8e616
ui changes and updates to extension
angvit Nov 12, 2025
38fca81
Font and slight styling changes
angvit Nov 13, 2025
56bf931
updated host_permissions, refactored footer, and added privacy page
angvit Nov 13, 2025
408ab82
making csphere rights visible
angvit Nov 13, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
42 changes: 42 additions & 0 deletions .github/workflows/heroku.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: Backend deployment via Heroku

on:
push:
branches:
- main

jobs:
deploy:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4
with:
ref: main

- name: Set up Python environment
uses: actions/setup-python@v5
with:
python-version: "3.10"

- name: Install Heroku CLI
run: |
curl https://cli-assets.heroku.com/install.sh | sh

- name: Deploy to Heroku
uses: akhileshns/heroku-deploy@v3.12.14
with:
heroku_api_key: ${{ secrets.HEROKU_API_KEY }}
heroku_app_name: ${{ secrets.HEROKU_APP_NAME }}
heroku_email: ${{ secrets.HEROKU_EMAIL }}
branch: main
appdir: backend

- name: Show git remotes
run: git remote -v

- name: Test Heroku login
run: heroku auth:whoami
env:
HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}
28 changes: 28 additions & 0 deletions .github/workflows/preview.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: Frontend deployment preview for other branches via Vercel

env:
VERCEL_ORG_ID: ${{secrets.VERCEL_ORG_ID}}
VERCEL_PROJECT_ID: ${{secrets.VERCEL_PROJECT_ID}}

on:
push:
branches-ignore:
- main

jobs:
Deploy-Production:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- name: Install Vercel CLI
run: npm install --global vercel

- name: Pull Vercel Environment Information
run: vercel pull --yes --environment=production --token=${{secrets.VERCEL_TOKEN}}

- name: Build Project Artifacts
run: vercel build --token=${{secrets.VERCEL_TOKEN}}

- name: Deploy Project Artifacts
run: vercel deploy --prebuilt --token=${{secrets.VERCEL_TOKEN}}
28 changes: 28 additions & 0 deletions .github/workflows/production.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: Frontend deployment via vercel

env:
VERCEL_ORG_ID: ${{secrets.VERCEL_ORG_ID}}
VERCEL_PROJECT_ID: ${{secrets.VERCEL_PROJECT_ID}}

on:
push:
branches:
- main

jobs:
Deploy-Production:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- name: Install Vercel CLI
run: npm install --global vercel

- name: Pull Vercel Environment Information
run: vercel pull --yes --environment=production --token=${{secrets.VERCEL_TOKEN}}

- name: Build Project Artifacts
run: vercel build --token=${{secrets.VERCEL_TOKEN}}

- name: Deploy Project Artifacts
run: vercel deploy --prebuilt --token=${{secrets.VERCEL_TOKEN}}
12 changes: 12 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,15 @@ __pycache__/
backend/app/data_models/__pycache__/content.cpython-312.pyc
backend/app/db/__pycache__/database.cpython-312.pyc
**/venv

/chrome_extension.zip
**/chrome_extension.zip
**/chrome_extension (2).zip


/backend/.vercel

/bin.py
/input.bin

/worker
101 changes: 100 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,100 @@
# AI-Content-Curator
<img src="https://github.com/angvit/Content-Rediscovery-Platform/blob/main/frontend/public/cspherelogo2.png?raw=true" alt="logo" width="350" height="200"/>

<h1>Rediscover what matters — faster.</h1>




A full-stack web app and browser extension that helps users **save**, **summarize**, and **search** web content using **embeddings** and **ai-generated summaries**.

**Live App**: [https://www.csphere.io/]

---

# Chrome Extension Download

#### 1. Downonload the zipped folder from this link: [download](https://download-directory.github.io/?url=https%3A%2F%2Fgithub.com%2Fcrosve%2FCsphere%2Ftree%2Fmain%2Fchrome_extension)
#### 2. Extract the folder.
#### 3. Go to `chrome://extensions/` in Chrome.
#### 4. Enable **Developer mode**.
#### 5. Click **"Load unpacked"** and select the extracted folder.

## Local Setup

### 1. Backend (Python + FastAPI)

```bash
cd backend
python -m venv venv
source venv/bin/activate (for windows: source venv/scripts/Activate )
pip install -r requirements.txt
uvicorn app.api.main:app --reload
```

API general structure
```bash
/<resource-prefix>/<resource-id>/<sub-resource>?<query-params>
```


### 2. Frontend (Next.js)

```bash
cd frontend
npm install
npm run dev
```

### 3. Chrome Extension

1. Load the `chrome_extension/` folder into Chrome via `chrome://extensions`

2. Enable Developer Mode -> "Load Unpacked" -> Select `chrome_extension/`


### Alembic Setup - Database Migrations

1. Install alembic

```bash
pip install alembic
```

2. Initialize Alembic at the root of the backend folder

```bash
alembic init
```

3. Configure your alembic INI file
set your sqlalchemy.url to your postgresql connector string


4. Set Target Metadata

In alembic/env.py, update the target_metadata to use your SQLAlchemy models' metadata.

For example, if you have a Base object defined in app/db/base.py:

```bash
from app.db.base import Base # Adjust the path based on your project
target_metadata = Base.metadata
```

5. Create a Migration Script
```bash
alembic revision --autogenerate -m "create users table"
```
6. Apply your migration to the database

```bash
alembic upgrade head
```

-To Downgrade a migration run this command

```bash
alembic downgrade -1
```


22 changes: 22 additions & 0 deletions backend/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Ignore virtual environment
venv/
venv2/

# Ignore Python cache files
__pycache__/
*.pyc
*.pyo
*.pyd

# Ignore environment variables
.env
.env/
/.env

# # Ignore Alembic migration cache if unwanted
# alembic/__pycache__/


app/data_models/__pycache__/**

/dockerfile
1 change: 1 addition & 0 deletions backend/.python-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3.12
1 change: 1 addition & 0 deletions backend/Procfile
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
web: uvicorn app.api.main:app --host=0.0.0.0 --port=${PORT}
141 changes: 141 additions & 0 deletions backend/alembic.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
# A generic, single database configuration.

[alembic]
# path to migration scripts.
# this is typically a path given in POSIX (e.g. forward slashes)
# format, relative to the token %(here)s which refers to the location of this
# ini file
script_location = %(here)s/alembic

# template used to generate migration file names; The default value is %%(rev)s_%%(slug)s
# Uncomment the line below if you want the files to be prepended with date and time
# see https://alembic.sqlalchemy.org/en/latest/tutorial.html#editing-the-ini-file
# for all available tokens
# file_template = %%(year)d_%%(month).2d_%%(day).2d_%%(hour).2d%%(minute).2d-%%(rev)s_%%(slug)s

# sys.path path, will be prepended to sys.path if present.
# defaults to the current working directory. for multiple paths, the path separator
# is defined by "path_separator" below.
prepend_sys_path = .


# timezone to use when rendering the date within the migration file
# as well as the filename.
# If specified, requires the python>=3.9 or backports.zoneinfo library and tzdata library.
# Any required deps can installed by adding `alembic[tz]` to the pip requirements
# string value is passed to ZoneInfo()
# leave blank for localtime
# timezone =

# max length of characters to apply to the "slug" field
# truncate_slug_length = 40

# set to 'true' to run the environment during
# the 'revision' command, regardless of autogenerate
# revision_environment = false

# set to 'true' to allow .pyc and .pyo files without
# a source .py file to be detected as revisions in the
# versions/ directory
# sourceless = false

# version location specification; This defaults
# to <script_location>/versions. When using multiple version
# directories, initial revisions must be specified with --version-path.
# The path separator used here should be the separator specified by "path_separator"
# below.
# version_locations = %(here)s/bar:%(here)s/bat:%(here)s/alembic/versions

# path_separator; This indicates what character is used to split lists of file
# paths, including version_locations and prepend_sys_path within configparser
# files such as alembic.ini.
# The default rendered in new alembic.ini files is "os", which uses os.pathsep
# to provide os-dependent path splitting.
#
# Note that in order to support legacy alembic.ini files, this default does NOT
# take place if path_separator is not present in alembic.ini. If this
# option is omitted entirely, fallback logic is as follows:
#
# 1. Parsing of the version_locations option falls back to using the legacy
# "version_path_separator" key, which if absent then falls back to the legacy
# behavior of splitting on spaces and/or commas.
# 2. Parsing of the prepend_sys_path option falls back to the legacy
# behavior of splitting on spaces, commas, or colons.
#
# Valid values for path_separator are:
#
# path_separator = :
# path_separator = ;
# path_separator = space
# path_separator = newline
#
# Use os.pathsep. Default configuration used for new projects.
path_separator = os

# set to 'true' to search source files recursively
# in each "version_locations" directory
# new in Alembic version 1.10
# recursive_version_locations = false

# the output encoding used when revision files
# are written from script.py.mako
# output_encoding = utf-8

# database URL. This is consumed by the user-maintained env.py script only.
# other means of configuring database URLs may be customized within the env.py
# file.



[post_write_hooks]
# post_write_hooks defines scripts or Python functions that are run
# on newly generated revision scripts. See the documentation for further
# detail and examples

# format using "black" - use the console_scripts runner, against the "black" entrypoint
# hooks = black
# black.type = console_scripts
# black.entrypoint = black
# black.options = -l 79 REVISION_SCRIPT_FILENAME

# lint with attempts to fix using "ruff" - use the exec runner, execute a binary
# hooks = ruff
# ruff.type = exec
# ruff.executable = %(here)s/.venv/bin/ruff
# ruff.options = check --fix REVISION_SCRIPT_FILENAME

# Logging configuration. This is also consumed by the user-maintained
# env.py script only.
[loggers]
keys = root,sqlalchemy,alembic

[handlers]
keys = console

[formatters]
keys = generic

[logger_root]
level = WARNING
handlers = console
qualname =

[logger_sqlalchemy]
level = WARNING
handlers =
qualname = sqlalchemy.engine

[logger_alembic]
level = INFO
handlers =
qualname = alembic

[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = generic

[formatter_generic]
format = %(levelname)-5.5s [%(name)s] %(message)s
datefmt = %H:%M:%S
1 change: 1 addition & 0 deletions backend/alembic/README
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Generic single-database configuration.
Loading