Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1141 commits
Select commit Hold shift + click to select a range
0e45920
🔧 Add T201 rule to ruff linting configuration to disallow print state…
alejsdev Sep 9, 2025
3df68f0
📝 Update release notes
github-actions[bot] Sep 9, 2025
01fdaf1
🔧 Update coverage configuration and simplify test script (#1867)
alejsdev Sep 9, 2025
bfaf3a7
📝 Update release notes
github-actions[bot] Sep 9, 2025
41c79b1
⬆️ Upgrade Biome to the latest version (#1861)
alejsdev Sep 9, 2025
1c2241b
📝 Update release notes
github-actions[bot] Sep 9, 2025
9c240c8
⬆ Bump pydantic from 2.9.2 to 2.11.7 in /backend (#1864)
dependabot[bot] Sep 9, 2025
51d5396
📝 Update release notes
github-actions[bot] Sep 9, 2025
42b4cae
⬆ Bump @tanstack/react-router from 1.131.36 to 1.131.37 in /frontend …
dependabot[bot] Sep 11, 2025
abf2af5
📝 Update release notes
github-actions[bot] Sep 11, 2025
feca1af
⬆ Bump @biomejs/biome from 2.2.3 to 2.2.4 in /frontend (#1869)
dependabot[bot] Sep 11, 2025
a3750e0
📝 Update release notes
github-actions[bot] Sep 11, 2025
b5abe29
⬆ Bump @tanstack/react-query from 5.87.1 to 5.87.4 in /frontend (#1868)
dependabot[bot] Sep 11, 2025
00cab5b
⬆ Bump @tanstack/router-plugin from 1.131.36 to 1.131.37 in /frontend…
dependabot[bot] Sep 11, 2025
3121f87
📝 Update release notes
github-actions[bot] Sep 11, 2025
73a769c
📝 Update release notes
github-actions[bot] Sep 11, 2025
f6befa2
⬆ Bump @tanstack/router-devtools from 1.131.36 to 1.131.37 in /fronte…
dependabot[bot] Sep 11, 2025
6a2f2e7
📝 Update release notes
github-actions[bot] Sep 11, 2025
af45df5
⬆ Bump @tanstack/react-router from 1.131.40 to 1.131.41 in /frontend …
dependabot[bot] Sep 12, 2025
c0ad25d
📝 Update release notes
github-actions[bot] Sep 12, 2025
b83c166
🔧 Update dependabot intervals for uv and npm dependencies to weekly (…
alejsdev Sep 12, 2025
4c63f76
⬆ Bump @tanstack/router-devtools from 1.131.40 to 1.131.41 in /fronte…
dependabot[bot] Sep 12, 2025
bb4240b
⬆ Bump axios from 1.11.0 to 1.12.0 in /frontend (#1878)
dependabot[bot] Sep 12, 2025
2a12d07
📝 Update release notes
github-actions[bot] Sep 12, 2025
362f07a
📝 Update release notes
github-actions[bot] Sep 12, 2025
e327b7c
📝 Update release notes
github-actions[bot] Sep 12, 2025
eba3b37
⬆ Bump @tanstack/react-query-devtools from 5.87.3 to 5.87.4 in /front…
dependabot[bot] Sep 12, 2025
14f2feb
📝 Update release notes
github-actions[bot] Sep 12, 2025
9a34074
⬆ Bump @tanstack/router-plugin from 1.131.39 to 1.131.41 in /frontend…
dependabot[bot] Sep 12, 2025
fabb010
📝 Update release notes
github-actions[bot] Sep 12, 2025
13ce5b9
⬆ Bump @tanstack/router-devtools from 1.131.41 to 1.131.42 in /fronte…
dependabot[bot] Sep 12, 2025
ad26497
📝 Update release notes
github-actions[bot] Sep 12, 2025
0cad6d0
⬆ Bump @types/node from 24.3.1 to 24.4.0 in /frontend (#1886)
dependabot[bot] Sep 15, 2025
e4215b8
📝 Update release notes
github-actions[bot] Sep 15, 2025
da35c0c
⬆ Bump axios from 1.12.0 to 1.12.2 in /frontend (#1889)
dependabot[bot] Sep 15, 2025
4fe2be9
⬆ Bump @chakra-ui/react from 3.26.0 to 3.27.0 in /frontend (#1890)
dependabot[bot] Sep 15, 2025
b2a00f1
⬆ Bump pydantic from 2.11.7 to 2.11.9 in /backend (#1891)
dependabot[bot] Sep 15, 2025
2f6bfde
📝 Update release notes
github-actions[bot] Sep 15, 2025
3e2cabd
📝 Update release notes
github-actions[bot] Sep 15, 2025
33ee473
📝 Update release notes
github-actions[bot] Sep 15, 2025
7f5fd5e
⬆ Bump @tanstack/router-plugin from 1.131.41 to 1.131.43 in /frontend…
dependabot[bot] Sep 15, 2025
83c1509
📝 Update release notes
github-actions[bot] Sep 15, 2025
628f519
⬆ Bump @types/react from 19.1.12 to 19.1.13 in /frontend (#1888)
dependabot[bot] Sep 15, 2025
d6993fd
📝 Update release notes
github-actions[bot] Sep 15, 2025
c0aab2c
🚚 Move backend tests outside the `app` directory (#1862)
YuriiMotov Sep 20, 2025
56365da
📝 Update release notes
github-actions[bot] Sep 20, 2025
b35ec41
🐛 Fix `parse_cors` function to be consistent for both empty string an…
rolkotaki Sep 20, 2025
760b744
📝 Update release notes
github-actions[bot] Sep 20, 2025
1d5db7a
⬆ Bump @tanstack/react-router from 1.131.44 to 1.131.50 in /frontend …
dependabot[bot] Sep 23, 2025
26d6e7a
⬆ Bump @tanstack/react-query from 5.87.4 to 5.90.1 in /frontend (#1896)
dependabot[bot] Sep 23, 2025
20a0ddc
📝 Update release notes
github-actions[bot] Sep 23, 2025
c6960bc
📝 Update release notes
github-actions[bot] Sep 23, 2025
8f0f10b
⬆ Bump vite from 7.1.5 to 7.1.7 in /frontend (#1893)
dependabot[bot] Sep 23, 2025
73dd8e6
📝 Update release notes
github-actions[bot] Sep 23, 2025
9fa06d8
⬆ Bump @types/node from 24.4.0 to 24.5.2 in /frontend (#1903)
dependabot[bot] Sep 30, 2025
085da7c
⬆ Bump @tanstack/react-query from 5.90.1 to 5.90.2 in /frontend (#1905)
dependabot[bot] Sep 30, 2025
32d7cf0
📝 Update release notes
github-actions[bot] Sep 30, 2025
9797bfb
📝 Update release notes
github-actions[bot] Sep 30, 2025
88077e4
⬆ Bump pydantic-settings from 2.10.1 to 2.11.0 in /backend (#1907)
dependabot[bot] Oct 1, 2025
583ed54
⬆ Bump @types/react from 19.1.13 to 19.1.15 in /frontend (#1906)
dependabot[bot] Oct 1, 2025
0f48c0a
📝 Update release notes
github-actions[bot] Oct 1, 2025
e13ff13
📝 Update release notes
github-actions[bot] Oct 1, 2025
598f9a3
⬆ Bump tiangolo/issue-manager from 0.5.1 to 0.6.0 (#1912)
dependabot[bot] Oct 1, 2025
e5feffb
📝 Update release notes
github-actions[bot] Oct 1, 2025
4d2a9e4
⬆ Bump pydantic from 2.11.9 to 2.11.10 in /backend (#1922)
dependabot[bot] Oct 8, 2025
bf5f857
⬆ Bump @tanstack/react-query-devtools from 5.87.4 to 5.90.2 in /front…
dependabot[bot] Oct 8, 2025
d54ba94
⬆ Bump @tanstack/router-plugin from 1.131.44 to 1.132.41 in /frontend…
dependabot[bot] Oct 8, 2025
162a865
📝 Update release notes
github-actions[bot] Oct 8, 2025
0bfc53a
📝 Update release notes
github-actions[bot] Oct 8, 2025
3208153
⬆ Bump vite from 7.1.7 to 7.1.9 in /frontend (#1919)
dependabot[bot] Oct 8, 2025
1fd5b62
📝 Update release notes
github-actions[bot] Oct 8, 2025
17a9de6
📝 Update release notes
github-actions[bot] Oct 8, 2025
eb76585
⬆ Bump astral-sh/setup-uv from 6 to 7 (#1925)
dependabot[bot] Oct 20, 2025
4d8af32
📝 Update release notes
github-actions[bot] Oct 20, 2025
8e29c57
⬆ Bump @tanstack/router-plugin from 1.132.41 to 1.133.15 in /frontend…
dependabot[bot] Oct 20, 2025
9088f80
📝 Update release notes
github-actions[bot] Oct 20, 2025
cb07423
⬆ Bump actions/setup-node from 5 to 6 (#1937)
dependabot[bot] Oct 20, 2025
2e9e89a
⬆ Bump alembic from 1.16.5 to 1.17.0 in /backend (#1935)
dependabot[bot] Oct 20, 2025
ce33a4c
📝 Update release notes
github-actions[bot] Oct 20, 2025
7b8695d
📝 Update release notes
github-actions[bot] Oct 20, 2025
3235644
⬆ Bump react-dom and @types/react-dom in /frontend (#1934)
dependabot[bot] Oct 20, 2025
c10234f
⬆ Bump pydantic from 2.11.10 to 2.12.3 in /backend (#1947)
dependabot[bot] Oct 20, 2025
bb7551d
📝 Update release notes
github-actions[bot] Oct 20, 2025
8560be7
📝 Update release notes
github-actions[bot] Oct 20, 2025
691571d
⬆ Bump vite from 7.1.9 to 7.1.11 in /frontend (#1949)
dependabot[bot] Oct 22, 2025
b705e0c
📝 Update release notes
github-actions[bot] Oct 22, 2025
ff255a8
♻️ Update password max length (#1447)
michaelAlvarino Oct 23, 2025
888f3cf
📝 Update release notes
github-actions[bot] Oct 23, 2025
4ad7c6e
🔧 Configure reminder for waiting label in issue-manager (#1939)
YuriiMotov Oct 25, 2025
1c1e444
⬆ Bump playwright from v1.55.0-noble to v1.56.1-noble in /frontend (#…
dependabot[bot] Oct 25, 2025
aa2d1f7
📝 Update release notes
github-actions[bot] Oct 25, 2025
6138a64
📝 Update release notes
github-actions[bot] Oct 25, 2025
96b757d
⬆ Bump @vitejs/plugin-react-swc from 4.0.1 to 4.1.0 in /frontend (#1897)
dependabot[bot] Oct 25, 2025
9230103
📝 Update release notes
github-actions[bot] Oct 25, 2025
e40d3b8
🔧 Fix issue-manager config for reminder (#1972)
tiangolo Nov 9, 2025
7ca2b2f
📝 Update release notes
github-actions[bot] Nov 9, 2025
8b29744
⬆ Bump alembic from 1.17.0 to 1.17.1 in /backend (#1970)
dependabot[bot] Nov 9, 2025
d81ad26
📝 Update release notes
github-actions[bot] Nov 9, 2025
b7bdc6a
⬆ Bump react-hook-form from 7.62.0 to 7.65.0 in /frontend (#1964)
dependabot[bot] Nov 9, 2025
f2b6dab
⬆ Bump actions/upload-artifact from 4 to 5 (#1962)
dependabot[bot] Nov 9, 2025
e8d2469
⬆ Bump @types/node from 24.5.2 to 24.9.1 in /frontend (#1961)
dependabot[bot] Nov 9, 2025
118aaed
📝 Update release notes
github-actions[bot] Nov 9, 2025
42f4422
📝 Update release notes
github-actions[bot] Nov 9, 2025
866e1aa
📝 Update release notes
github-actions[bot] Nov 9, 2025
33e839b
⬆ Bump actions/download-artifact from 5 to 6 (#1959)
dependabot[bot] Nov 9, 2025
72c7d09
⬆ Bump @vitejs/plugin-react-swc from 4.1.0 to 4.2.0 in /frontend (#1958)
dependabot[bot] Nov 9, 2025
982e2cf
📝 Update release notes
github-actions[bot] Nov 9, 2025
3031e32
📝 Update release notes
github-actions[bot] Nov 9, 2025
2bbc226
⬆ Bump actions/checkout from 5 to 6 (#1988)
dependabot[bot] Nov 22, 2025
2387050
⬆ Bump js-yaml from 4.1.0 to 4.1.1 in /frontend (#1983)
dependabot[bot] Nov 22, 2025
096b0c7
⬆ Bump pydantic from 2.12.3 to 2.12.4 in /backend (#1978)
dependabot[bot] Nov 22, 2025
cee879e
⬆ Bump vite from 7.1.11 to 7.2.2 in /frontend (#1977)
dependabot[bot] Nov 22, 2025
5446284
⬆ Bump @tanstack/react-query from 5.90.2 to 5.90.7 in /frontend (#1976)
dependabot[bot] Nov 22, 2025
30f2049
⬆ Bump @types/react-dom from 19.2.1 to 19.2.2 in /frontend (#1975)
dependabot[bot] Nov 22, 2025
e62aa6e
⬆ Bump @chakra-ui/react from 3.27.0 to 3.29.0 in /frontend (#1974)
dependabot[bot] Nov 22, 2025
4e0cf36
⬆ Bump dotenv from 17.2.2 to 17.2.3 in /frontend (#1957)
dependabot[bot] Nov 24, 2025
3315d92
🔧 Add labels to Dependabot updates (#1992)
alejsdev Nov 24, 2025
55b3e3a
⬆ Bump @tanstack/react-query-devtools from 5.90.2 to 5.91.0 in /front…
dependabot[bot] Nov 24, 2025
e95aa76
⬆ Bump @chakra-ui/react from 3.29.0 to 3.30.0 in /frontend (#1995)
dependabot[bot] Nov 24, 2025
f93de67
⬆ Bump @vitejs/plugin-react-swc from 4.2.1 to 4.2.2 in /frontend (#1996)
dependabot[bot] Nov 24, 2025
acc741b
⬆ Bump react-hook-form from 7.66.0 to 7.66.1 in /frontend (#1997)
dependabot[bot] Nov 24, 2025
59f72fc
⬆ Bump @biomejs/biome from 2.2.4 to 2.3.7 in /frontend (#1998)
dependabot[bot] Nov 24, 2025
03fd1f6
⬆ Bump alembic from 1.17.1 to 1.17.2 in /backend (#1999)
dependabot[bot] Nov 24, 2025
33b85a0
⬆ Bump pydantic-settings from 2.11.0 to 2.12.0 in /backend (#2000)
dependabot[bot] Nov 24, 2025
0c37930
⬆ Bump @types/node from 24.10.0 to 24.10.1 in /frontend (#2005)
dependabot[bot] Nov 24, 2025
041fedc
⬆ Bump @types/react-dom from 19.2.2 to 19.2.3 in /frontend (#2004)
dependabot[bot] Nov 24, 2025
e7c1daf
⬆ Bump typescript from 5.9.2 to 5.9.3 in /frontend (#2002)
dependabot[bot] Nov 24, 2025
41621d1
⬆ Bump @tanstack/router-devtools from 1.131.42 to 1.139.3 in /fronten…
dependabot[bot] Nov 24, 2025
3b99d7c
⬆ Bump @types/react from 19.2.2 to 19.2.7 in /frontend (#2003)
dependabot[bot] Nov 24, 2025
df2edc0
👷 Upgrade latest-changes and pin actions/checkout@v5 (#2006)
svlandeg Nov 24, 2025
e37343c
📝 Update release notes
github-actions[bot] Nov 24, 2025
59e2796
📝 Update release notes
github-actions[bot] Nov 24, 2025
910bee7
📝 Update release notes
github-actions[bot] Nov 24, 2025
35a6ff8
📝 Update release notes
github-actions[bot] Nov 24, 2025
634af8b
📝 Update release notes
github-actions[bot] Nov 24, 2025
021130e
📝 Update release notes
github-actions[bot] Nov 24, 2025
93d7a4b
📝 Update release notes
github-actions[bot] Nov 24, 2025
f226c4f
📝 Update release notes
github-actions[bot] Nov 24, 2025
b17e7ce
📝 Update release notes
github-actions[bot] Nov 24, 2025
9263a6d
📝 Update release notes
github-actions[bot] Nov 24, 2025
12078fe
📝 Update release notes
github-actions[bot] Nov 24, 2025
b9e46a3
📝 Update release notes
github-actions[bot] Nov 24, 2025
461dc5a
📝 Update release notes
github-actions[bot] Nov 24, 2025
f878760
📝 Update release notes
github-actions[bot] Nov 24, 2025
468d535
📝 Update release notes
github-actions[bot] Nov 24, 2025
37f0fed
📝 Update release notes
github-actions[bot] Nov 24, 2025
0e911be
📝 Update release notes
github-actions[bot] Nov 24, 2025
046d47e
📝 Update release notes
github-actions[bot] Nov 24, 2025
b5c613b
📝 Update release notes
github-actions[bot] Nov 24, 2025
eace383
📝 Update release notes
github-actions[bot] Nov 24, 2025
248ed00
📝 Update release notes
github-actions[bot] Nov 24, 2025
b8cca51
📝 Update release notes
github-actions[bot] Nov 24, 2025
442f397
⬆ Bump actions/checkout from 5 to 6 (#2007)
dependabot[bot] Nov 25, 2025
0e7db93
📝 Update release notes
github-actions[bot] Nov 25, 2025
1d4619a
⬆ Bump form-data from 4.0.4 to 4.0.5 in /frontend (#2011)
dependabot[bot] Dec 1, 2025
81f699b
⬆ Bump @tanstack/router-plugin from 1.133.15 to 1.139.12 in /frontend…
dependabot[bot] Dec 1, 2025
b6506e7
📝 Update release notes
github-actions[bot] Dec 1, 2025
b200e74
📝 Update release notes
github-actions[bot] Dec 1, 2025
3ecad05
⬆ Bump @tanstack/react-query-devtools from 5.91.0 to 5.91.1 in /front…
dependabot[bot] Dec 1, 2025
1f11dac
📝 Update release notes
github-actions[bot] Dec 1, 2025
f187654
⬆ Bump @biomejs/biome from 2.3.7 to 2.3.8 in /frontend (#2014)
dependabot[bot] Dec 1, 2025
0e64694
📝 Update release notes
github-actions[bot] Dec 1, 2025
bbe0efd
⬆ Bump vite from 7.2.2 to 7.2.6 in /frontend (#2015)
dependabot[bot] Dec 1, 2025
b2b0cac
📝 Update release notes
github-actions[bot] Dec 1, 2025
f67f818
⬆️ Update schema version in biome.json (#2017)
alejsdev Dec 1, 2025
0d816ee
📝 Update release notes
github-actions[bot] Dec 1, 2025
aeff9e7
⬆ Bump playwright from v1.56.1-noble to v1.57.0-noble in /frontend (#…
dependabot[bot] Dec 1, 2025
4996083
📝 Update release notes
github-actions[bot] Dec 1, 2025
d659a91
🐛 Fix EMAILS_FROM_NAME type to be str instead of EmailStr (#1940)
martin0258 Dec 1, 2025
5495404
📝 Update release notes
github-actions[bot] Dec 1, 2025
57225b9
🛂 Migrate frontend to Shadcn (#2010)
alejsdev Dec 7, 2025
3ade120
📝 Update release notes
github-actions[bot] Dec 7, 2025
8ae9dae
⬆ Bump @tanstack/router-devtools from 1.139.3 to 1.139.12 in /fronten…
dependabot[bot] Dec 7, 2025
2b7b5c0
⬆ Bump axios from 1.12.2 to 1.13.2 in /frontend (#2020)
dependabot[bot] Dec 7, 2025
a47df49
⬆ Bump @tanstack/react-query from 5.90.10 to 5.90.11 in /frontend (#2…
dependabot[bot] Dec 7, 2025
449e3db
📝 Update release notes
github-actions[bot] Dec 7, 2025
7b54620
⬆ Bump react-hook-form from 7.66.1 to 7.67.0 in /frontend (#2018)
dependabot[bot] Dec 7, 2025
2ce20f2
📝 Update release notes
github-actions[bot] Dec 7, 2025
7735fed
📝 Update release notes
github-actions[bot] Dec 7, 2025
45df12a
📝 Update release notes
github-actions[bot] Dec 7, 2025
4d41951
🔧 Add Tailwind CSS directives support in biome config (#2029)
alejsdev Dec 7, 2025
ff24ead
📝 Update release notes
github-actions[bot] Dec 7, 2025
a5b5c05
⬆ Bump lucide-react from 0.555.0 to 0.556.0 in /frontend (#2031)
dependabot[bot] Dec 8, 2025
80d76d3
⬆ Bump @tanstack/router-plugin from 1.139.12 to 1.140.0 in /frontend …
dependabot[bot] Dec 8, 2025
a93abc1
⬆ Bump vite from 7.2.6 to 7.2.7 in /frontend (#2033)
dependabot[bot] Dec 8, 2025
fe9bd6e
⬆ Bump react-dom from 19.2.0 to 19.2.1 in /frontend (#2032)
dependabot[bot] Dec 8, 2025
adfabed
📝 Update release notes
github-actions[bot] Dec 8, 2025
99f9c34
📝 Update release notes
github-actions[bot] Dec 8, 2025
27f6b69
📝 Update release notes
github-actions[bot] Dec 8, 2025
e0eeeca
📝 Update release notes
github-actions[bot] Dec 8, 2025
2aa1514
🔥 Remove unused dependencies (#2035)
alejsdev Dec 8, 2025
29ceb5c
📝 Update release notes
github-actions[bot] Dec 8, 2025
9b6e106
📝 Update docs (#2036)
alejsdev Dec 8, 2025
f4aa91b
📝 Update release notes
github-actions[bot] Dec 8, 2025
0b5c6d0
📝 Fix outdated workflow badge (#2028)
AymanAlSuleihi Dec 8, 2025
e91d28c
📝 Update release notes
github-actions[bot] Dec 8, 2025
f425d38
📝 Update README to include link for Vite (#2037)
alejsdev Dec 8, 2025
ec2cf5a
📝 Update release notes
github-actions[bot] Dec 8, 2025
7d92757
✨ Implement Redis caching and middleware enhancements
azzi2023 Dec 8, 2025
959f3b3
📝 Add Mailcatcher setup instructions for local email testing (#2038)
alejsdev Dec 8, 2025
404436c
📝 Update release notes
github-actions[bot] Dec 8, 2025
290e2d4
✨ Add meta title support to all pages (#2039)
alejsdev Dec 8, 2025
bf3f7f5
📝 Update release notes
github-actions[bot] Dec 8, 2025
a5dd0ee
🔖 Release version 0.9.0
tiangolo Dec 8, 2025
95df116
Revert specific files to previous commit state
azzi2023 Dec 9, 2025
8e24054
Add Docker Compose configurations for development and testing
azzi2023 Dec 9, 2025
a3aadd7
Refactor Docker Compose configurations for development environment
azzi2023 Dec 9, 2025
f9dd2a2
Merge pull request #1 from azzi2023/feat/redis-cache-middleware
azzi2023 Dec 12, 2025
51b6d79
Merge pull request #2 from azzi2023/setup/core-services-revamp
azzi2023 Dec 12, 2025
ded4a39
Merge pull request #4 from fastapi/master
coding-sunshine Dec 14, 2025
6133587
Merge branch 'master' into master
azzi2023 Dec 15, 2025
1f20f42
Refactor tests and remove unused files
azzi2023 Dec 15, 2025
cbfd719
Merge branch 'master' of https://github.com/azzi2023/organyz-python-b…
azzi2023 Dec 15, 2025
b2733a3
Revamp core services: add Redis support, enhance WebEngage integratio…
azzi2023 Dec 15, 2025
10b2708
refactor: remove signup, login, and password reset functionality
azzi2023 Dec 15, 2025
28ab779
fix: update GitHub token in add-to-project workflow
azzi2023 Dec 15, 2025
94f8354
refactor: remove frontend references and disable related workflows
azzi2023 Dec 16, 2025
374d739
refactor: remove frontend references and update documentation for bac…
azzi2023 Dec 16, 2025
270c42a
refactor: enhance Redis integration, improve WebSocketManager, and ad…
azzi2023 Dec 16, 2025
2dd1697
refactor: update GitHub workflows, enhance labeler configuration, and…
azzi2023 Dec 16, 2025
f306e31
refactor: enhance application structure and improve error handling
azzi2023 Dec 16, 2025
65f63eb
refactor: implement initial admin user creation and enhance pre-start…
azzi2023 Dec 16, 2025
2dfa7ad
refactor: improve code readability and formatting across multiple files
azzi2023 Dec 16, 2025
759167a
refactor: ensure coverage is installed in the Docker container for te…
azzi2023 Dec 16, 2025
644dfeb
refactor: enhance test workflow to bootstrap pip and install dependen…
azzi2023 Dec 16, 2025
f477150
refactor: update Dockerfile and pyproject.toml to streamline test dep…
azzi2023 Dec 16, 2025
4e8610e
refactor: simplify pip bootstrapping in test workflow for backend con…
azzi2023 Dec 16, 2025
ec53ae9
refactor: add coverage dependency to project dependencies in pyprojec…
azzi2023 Dec 17, 2025
34293dd
refactor: improve error handling and configuration loading in auth an…
azzi2023 Dec 17, 2025
dd75f26
refactor: update label checker version, enhance password security, an…
azzi2023 Dec 17, 2025
7784c0f
refactor: update permissions for initdb scripts in Dockerfile
azzi2023 Dec 17, 2025
1097e2a
refactor: streamline initdb script permissions in Dockerfile
azzi2023 Dec 17, 2025
9feadc4
refactor: update initdb script permissions in Dockerfile
azzi2023 Dec 17, 2025
6162d11
refactor: adjust permissions for initdb scripts in Dockerfile
azzi2023 Dec 17, 2025
f15b92e
refactor: consolidate initdb script permissions in Dockerfile
azzi2023 Dec 17, 2025
0ee2982
refactor: update ownership for initdb script in Dockerfile
azzi2023 Dec 17, 2025
bac4bff
refactor: update DB migration command in test workflow
azzi2023 Dec 17, 2025
315e57b
refactor: enhance test workflow with improved DB setup and logging
azzi2023 Dec 17, 2025
5885ba3
refactor: update project permissions and enhance DB volume setup in w…
azzi2023 Dec 17, 2025
438ba24
refactor: standardize user password usage in settings and tests
azzi2023 Dec 17, 2025
e7817a9
refactor: improve exception handling during WebSocketManager stop pro…
azzi2023 Dec 17, 2025
f313e45
Refactor email templates and user authentication flow
azzi2023 Dec 19, 2025
495641e
refactor: enhance type casting in send_email function and update test…
azzi2023 Dec 19, 2025
a5608f5
feat: implement forgot and reset password functionality with email no…
azzi2023 Dec 19, 2025
ae79976
feat: add social login functionality and external account management
azzi2023 Dec 22, 2025
a08f926
feat: integrate Google Drive functionality and enhance Apple Sign-In …
azzi2023 Dec 26, 2025
71ba8ab
refactor: streamline Google Drive integration and clean up external a…
azzi2023 Dec 26, 2025
644a517
feat: integrate Dropbox and OneDrive functionalities with enhanced AP…
azzi2023 Jan 7, 2026
d12a1c0
feat: enhance Dropbox and search functionalities with new API routes …
azzi2023 Jan 9, 2026
0a15a24
Merge branch 'master' into feat/goole-drive
azzi2023 Jan 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/smokeshow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
with:
python-version: "3.10"
- run: pip install smokeshow
- uses: actions/download-artifact@v7
- uses: actions/download-artifact@v6
with:
name: coverage-html
path: backend/htmlcov
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test-backend.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ jobs:
if: failure()
run: docker compose logs --no-color db || true
- name: Store coverage files
uses: actions/upload-artifact@v6
uses: actions/upload-artifact@v5
with:
name: coverage-html
path: backend/htmlcov
Expand Down
29 changes: 27 additions & 2 deletions backend/app/api/controllers/dropbox_controller.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import uuid
from datetime import datetime
from typing import Any

from fastapi.datastructures import UploadFile
Expand All @@ -18,6 +19,16 @@ def __init__(self) -> None:
self.response_class: type[ResponseSchema[Any]] = ResponseSchema
self.error_class = AppException

def _serialize_datetime(self, obj: Any) -> Any:
"""Recursively serialize datetime objects to ISO format strings"""
if isinstance(obj, datetime):
return obj.isoformat()
elif isinstance(obj, dict):
return {k: self._serialize_datetime(v) for k, v in obj.items()}
elif isinstance(obj, list):
return [self._serialize_datetime(item) for item in obj]
return obj

def _success(
self,
data: Any = None,
Expand All @@ -40,6 +51,8 @@ def _success(
elif isinstance(data, SQLModel):
# Convert SQLModel to dict with proper UUID serialization
data_payload = data.model_dump(mode="json")
# Recursively serialize any remaining datetime objects (e.g., in extra_data)
data_payload = self._serialize_datetime(data_payload)

payload = self.response_class(
success=True,
Expand Down Expand Up @@ -94,7 +107,6 @@ async def connect_dropbox_with_tokens(
access_token=token_response.access_token,
expires_in=token_response.expires_in,
refresh_token=token_response.refresh_token,
token_type=token_response.token_type,
scope=token_response.scope,
user_id=user_id,
)
Expand Down Expand Up @@ -133,6 +145,20 @@ async def get_all_files_with_namespaces(
except Exception as e:
return self._error(message=e)

async def get_all_files(
self,
user_id: uuid.UUID,
) -> JSONResponse:
"""Get all files as a flat list without namespace organization"""
try:
files = await self.service.get_all_files_combined(user_id=user_id)
return self._success(
data={"files": files, "total_files": len(files)},
message="Successfully retrieved all files",
)
except Exception as e:
return self._error(message=e)

async def get_all_namespaces(
self,
user_id: uuid.UUID,
Expand Down Expand Up @@ -182,4 +208,3 @@ async def upload_file(
)
except Exception as e:
return self._error(message=e)

127 changes: 127 additions & 0 deletions backend/app/api/controllers/search_controller.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
import uuid
from typing import Any

from fastapi.responses import JSONResponse
from sqlmodel import SQLModel
from starlette import status

from app.core.exceptions import AppException
from app.schemas.response import ResponseSchema
from app.services.search_service import SearchService


class SearchController:
def __init__(self) -> None:
self.service = SearchService()
self.response_class: type[ResponseSchema[Any]] = ResponseSchema
self.error_class = AppException

def _serialize_datetime(self, obj: Any) -> Any:
"""Recursively serialize datetime objects to ISO format strings"""
if isinstance(obj, (str, int, float, bool, type(None))):
return obj
elif hasattr(obj, "isoformat"): # datetime objects
return obj.isoformat()
elif isinstance(obj, dict):
return {k: self._serialize_datetime(v) for k, v in obj.items()}
elif isinstance(obj, list):
return [self._serialize_datetime(item) for item in obj]
return obj

def _success(
self,
data: Any = None,
message: str = "OK",
status_code: int = status.HTTP_200_OK,
) -> JSONResponse:
msg = message
data_payload = data

if isinstance(data, dict):
msg = data.get("message") or message
if "user" in data:
data_payload = data.get("user")
elif "data" in data:
data_payload = data.get("data")
if isinstance(data_payload, dict) and "message" in data_payload:
data_payload = {
k: v for k, v in data_payload.items() if k != "message"
}
elif isinstance(data, SQLModel):
# Convert SQLModel to dict with proper UUID serialization
data_payload = data.model_dump(mode="json")
# Recursively serialize any remaining datetime objects
data_payload = self._serialize_datetime(data_payload)

# Serialize datetime objects in data_payload
data_payload = self._serialize_datetime(data_payload)

payload = self.response_class(
success=True,
message=msg,
data=data_payload,
errors=None,
meta=None,
).model_dump(mode="json", exclude_none=True)

return JSONResponse(status_code=status_code, content=payload)

def _error(
self, message: Any = "Error", errors: Any = None, status_code: int | None = None
) -> JSONResponse:
code = status_code
if isinstance(message, self.error_class):
exc = message
fallback_status = getattr(exc, "status_code", status.HTTP_400_BAD_REQUEST)
if code is None:
if isinstance(fallback_status, int):
code = fallback_status
else:
code = status.HTTP_400_BAD_REQUEST
payload = self.response_class(
success=False,
message=getattr(exc, "message", str(exc)),
errors=getattr(exc, "details", None),
data=None,
).model_dump(mode="json", exclude_none=True)
return JSONResponse(status_code=int(code), content=payload)

code = code if code is not None else status.HTTP_400_BAD_REQUEST
msg = str(message)

payload = self.response_class(
success=False,
message=msg,
errors=errors,
data=None,
).model_dump(mode="json", exclude_none=True)

return JSONResponse(status_code=int(code), content=payload)

async def search_all_providers(
self,
user_id: uuid.UUID,
query: str,
search_in_content: bool = True,
max_file_size: int = 10 * 1024 * 1024,
) -> JSONResponse:
try:
if not query or not query.strip():
return self._error(
message="Search query cannot be empty",
status_code=status.HTTP_400_BAD_REQUEST,
)

results = await self.service.search_all_providers(
user_id=user_id,
search_query=query,
search_in_content=search_in_content,
max_file_size=max_file_size,
)

return self._success(
data=results,
message=f"Search completed. Found {results.get('total_files', 0)} files matching '{query}'",
)
except Exception as e:
return self._error(message=e)
3 changes: 2 additions & 1 deletion backend/app/api/main.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from fastapi import APIRouter

from app.api.routes import auth, dropbox, integrations, one_drive, utils, ws
from app.api.routes import auth, dropbox, integrations, one_drive, search, utils, ws

api_router = APIRouter()
api_router.include_router(auth.router)
Expand All @@ -9,3 +9,4 @@
api_router.include_router(integrations.router)
api_router.include_router(one_drive.router)
api_router.include_router(dropbox.router)
api_router.include_router(search.router)
8 changes: 8 additions & 0 deletions backend/app/api/routes/dropbox.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,14 @@ async def connect_dropbox_with_tokens(
)


@router.get("/files")
async def get_all_files(
user_id: uuid.UUID = Depends(get_current_user_id),
) -> JSONResponse:
"""Get all files as a flat list without namespace organization"""
return await controller.get_all_files(user_id=user_id)


@router.get("/files/all")
async def get_all_files_with_namespaces(
user_id: uuid.UUID = Depends(get_current_user_id),
Expand Down
30 changes: 30 additions & 0 deletions backend/app/api/routes/search.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import uuid

from fastapi import APIRouter, Depends, Query
from fastapi.responses import JSONResponse

from app.api.controllers.search_controller import SearchController
from app.api.deps import get_current_user_id

router = APIRouter(prefix="/search", tags=["Search"])
controller = SearchController()


@router.get("/files")
async def search_all_providers(
query: str = Query(..., description="Search query string (e.g., 'asad')"),
search_in_content: bool = Query(
True, description="Whether to search inside file contents"
),
max_file_size: int = Query(
10 * 1024 * 1024,
description="Maximum file size to search content in bytes (default: 10MB)",
),
user_id: uuid.UUID = Depends(get_current_user_id),
) -> JSONResponse:
return await controller.search_all_providers(
user_id=user_id,
query=query,
search_in_content=search_in_content,
max_file_size=max_file_size,
)
5 changes: 2 additions & 3 deletions backend/app/schemas/external_account.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,8 @@ class OneDriveTokenResponse(BaseModel):

class DropboxTokenResponse(BaseModel):
access_token: str = Field(..., description="Dropbox OAuth access token")
expires_in: int | None = Field(
None, description="Access token expiration time in seconds"
expires_in: str | None = Field(
None, description="Access token expiration time in ISO 8601 format"
)
token_type: str | None = Field(default="Bearer", description="Token type")
refresh_token: str | None = Field(None, description="Dropbox OAuth refresh token")
scope: str | None = Field(None, description="OAuth scopes granted")
Loading
Loading