Big upgrade: ChakraUI v3, Fastapi service & repository structure, better navbar header, backend unittest db isolation, and more! - #1461

Closed
peter-cognicode wants to merge 1 commit into
fastapi:masterfrom
peter-cognicode:upgrade-backend-frontend
Closed

Big upgrade: ChakraUI v3, Fastapi service & repository structure, better navbar header, backend unittest db isolation, and more!#1461
peter-cognicode wants to merge 1 commit into
fastapi:masterfrom
peter-cognicode:upgrade-backend-frontend

Conversation

@peter-cognicode

@peter-cognicodepeter-cognicode commented Jan 15, 2025

Copy link
Copy Markdown

I decided to do a big upgrade on this project to make it more ready for larger applications. Therefore i removed the crud file in favor of a service and repository structure. This helped me a lot in the past preventing duplicate code. Also i migrated the frontend to chakraui v3 and vite v6

I don't know if this is too big for you to review, please let me know how i can help to get this merged so more people can benefit from these upgrades.

Help needed / Questions:

  • Do we still want the custom theme? it felt a bit of overkill on an example template. Since chakraui changed the way of working, i opted for the default colors for now.
  • frontend client generation github action is failing.. I removed the formatter on the generated client code (./scripts/generate-client.sh), since with new biome version it gave too many exceptions. But i dont know what is going wrong now. Maybe a different python version.. im using 12 and github is using 10?

Changes

Major changes:

  • frontend to chakraui 3.3.1
    • updated all components
    • simplified form structure with label property and automatic ids
    • added custom RouteLink for tanstack router integration
    • added pagination component
    • added system default to darkmode setting page
  • frontend menu improvements
    • added top navbar with fastapi logo and better flex styling
    • improved sidebar
  • backend to service and repository structure
    • removed crud folder, it is not scalable
    • avoids duplicate code & improves folder structure for larger apps
  • backend tests using separate database app_test
    • automatically created in postrges docker via .env
    • this avoids localdev data pollution while testing
    • playwright still uses the normal running app and database

Minor changes:

  • upgraded all dependencies in frontend
  • fixed python version to <13 because i got errors on python 13
  • improved configuration of tooling so it works in vscode (eg biome)
  • improved VSCode configuration + setting.example.json (to avoid overwriting local settings)

Screenshots

home:
image
items:
image
settings:
image

add item:
image

mobile view:
image
image

@peter-cognicodepeter-cognicode changed the title upgrade backend and frontend to latestBig upgrade: ChakraUI v3, Navbar header, Fastapi service & repository structure, unittest db isolation, and more!Jan 15, 2025
@peter-cognicodepeter-cognicode changed the title Big upgrade: ChakraUI v3, Navbar header, Fastapi service & repository structure, unittest db isolation, and more!Big upgrade: ChakraUI v3, Fastapi service & repository structure, Navbar header, backend unittest db isolation, and more!Jan 15, 2025
@peter-cognicodepeter-cognicode changed the title Big upgrade: ChakraUI v3, Fastapi service & repository structure, Navbar header, backend unittest db isolation, and more!Big upgrade: ChakraUI v3, Fastapi service & repository structure, better navbar header, backend unittest db isolation, and more!Jan 15, 2025
@peter-cognicode
peter-cognicodeforce-pushed the upgrade-backend-frontend branch 5 times, most recently from 97d7183 to f23cc0cCompareJanuary 15, 2025 21:21
@tiangolo

Copy link
Copy Markdown
Member

Thanks for your interest! ☕

This PR has many changes for different things. It would be necessary to split it into different PRs for each individual topic that needs to be reviewed, tweaked, and latter accepted or rejected. But if everything is together in a single PR it's not possible to handle each subject individually. 🥲

One of the big changes here is the migration to Chakra UI v3, this was handled in this other PR: #1496. We already had it in the backlog with a plan to handle it, ensure the styles kept consistent, etc.

For the other changes, apart from being in individual PRs, it might also be better to start with a discussion with your ideas to see if I would want to have them in the project before you invest too much time in working on them.

For now I'll pass on this one, but if you want, feel free to create new discussions or PRs with individual ideas. 🤓 🍰

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@peter-cognicode@tiangolo
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Big upgrade: ChakraUI v3, Fastapi service & repository structure, better navbar header, backend unittest db isolation, and more! - #1461

Closed
peter-cognicode wants to merge 1 commit into
fastapi:masterfrom
peter-cognicode:upgrade-backend-frontend
Closed

Big upgrade: ChakraUI v3, Fastapi service & repository structure, better navbar header, backend unittest db isolation, and more!#1461
peter-cognicode wants to merge 1 commit into
fastapi:masterfrom
peter-cognicode:upgrade-backend-frontend

Conversation

@peter-cognicode

@peter-cognicodepeter-cognicode commented Jan 15, 2025

Copy link
Copy Markdown

I decided to do a big upgrade on this project to make it more ready for larger applications. Therefore i removed the crud file in favor of a service and repository structure. This helped me a lot in the past preventing duplicate code. Also i migrated the frontend to chakraui v3 and vite v6

I don't know if this is too big for you to review, please let me know how i can help to get this merged so more people can benefit from these upgrades.

Help needed / Questions:

  • Do we still want the custom theme? it felt a bit of overkill on an example template. Since chakraui changed the way of working, i opted for the default colors for now.
  • frontend client generation github action is failing.. I removed the formatter on the generated client code (./scripts/generate-client.sh), since with new biome version it gave too many exceptions. But i dont know what is going wrong now. Maybe a different python version.. im using 12 and github is using 10?

Changes

Major changes:

  • frontend to chakraui 3.3.1
    • updated all components
    • simplified form structure with label property and automatic ids
    • added custom RouteLink for tanstack router integration
    • added pagination component
    • added system default to darkmode setting page
  • frontend menu improvements
    • added top navbar with fastapi logo and better flex styling
    • improved sidebar
  • backend to service and repository structure
    • removed crud folder, it is not scalable
    • avoids duplicate code & improves folder structure for larger apps
  • backend tests using separate database app_test
    • automatically created in postrges docker via .env
    • this avoids localdev data pollution while testing
    • playwright still uses the normal running app and database

Minor changes:

  • upgraded all dependencies in frontend
  • fixed python version to <13 because i got errors on python 13
  • improved configuration of tooling so it works in vscode (eg biome)
  • improved VSCode configuration + setting.example.json (to avoid overwriting local settings)

Screenshots

home:
image
items:
image
settings:
image

add item:
image

mobile view:
image
image

@peter-cognicodepeter-cognicode changed the title upgrade backend and frontend to latestBig upgrade: ChakraUI v3, Navbar header, Fastapi service & repository structure, unittest db isolation, and more!Jan 15, 2025
@peter-cognicodepeter-cognicode changed the title Big upgrade: ChakraUI v3, Navbar header, Fastapi service & repository structure, unittest db isolation, and more!Big upgrade: ChakraUI v3, Fastapi service & repository structure, Navbar header, backend unittest db isolation, and more!Jan 15, 2025
@peter-cognicodepeter-cognicode changed the title Big upgrade: ChakraUI v3, Fastapi service & repository structure, Navbar header, backend unittest db isolation, and more!Big upgrade: ChakraUI v3, Fastapi service & repository structure, better navbar header, backend unittest db isolation, and more!Jan 15, 2025
@peter-cognicode
peter-cognicodeforce-pushed the upgrade-backend-frontend branch 5 times, most recently from 97d7183 to f23cc0cCompareJanuary 15, 2025 21:21
@tiangolo

Copy link
Copy Markdown
Member

Thanks for your interest! ☕

This PR has many changes for different things. It would be necessary to split it into different PRs for each individual topic that needs to be reviewed, tweaked, and latter accepted or rejected. But if everything is together in a single PR it's not possible to handle each subject individually. 🥲

One of the big changes here is the migration to Chakra UI v3, this was handled in this other PR: #1496. We already had it in the backlog with a plan to handle it, ensure the styles kept consistent, etc.

For the other changes, apart from being in individual PRs, it might also be better to start with a discussion with your ideas to see if I would want to have them in the project before you invest too much time in working on them.

For now I'll pass on this one, but if you want, feel free to create new discussions or PRs with individual ideas. 🤓 🍰

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@peter-cognicode@tiangolo
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Big upgrade: ChakraUI v3, Fastapi service & repository structure, better navbar header, backend unittest db isolation, and more! - #1461

Closed
peter-cognicode wants to merge 1 commit into
fastapi:masterfrom
peter-cognicode:upgrade-backend-frontend
Closed

Big upgrade: ChakraUI v3, Fastapi service & repository structure, better navbar header, backend unittest db isolation, and more!#1461
peter-cognicode wants to merge 1 commit into
fastapi:masterfrom
peter-cognicode:upgrade-backend-frontend

Conversation

@peter-cognicode

@peter-cognicodepeter-cognicode commented Jan 15, 2025

Copy link
Copy Markdown

I decided to do a big upgrade on this project to make it more ready for larger applications. Therefore i removed the crud file in favor of a service and repository structure. This helped me a lot in the past preventing duplicate code. Also i migrated the frontend to chakraui v3 and vite v6

I don't know if this is too big for you to review, please let me know how i can help to get this merged so more people can benefit from these upgrades.

Help needed / Questions:

  • Do we still want the custom theme? it felt a bit of overkill on an example template. Since chakraui changed the way of working, i opted for the default colors for now.
  • frontend client generation github action is failing.. I removed the formatter on the generated client code (./scripts/generate-client.sh), since with new biome version it gave too many exceptions. But i dont know what is going wrong now. Maybe a different python version.. im using 12 and github is using 10?

Changes

Major changes:

  • frontend to chakraui 3.3.1
    • updated all components
    • simplified form structure with label property and automatic ids
    • added custom RouteLink for tanstack router integration
    • added pagination component
    • added system default to darkmode setting page
  • frontend menu improvements
    • added top navbar with fastapi logo and better flex styling
    • improved sidebar
  • backend to service and repository structure
    • removed crud folder, it is not scalable
    • avoids duplicate code & improves folder structure for larger apps
  • backend tests using separate database app_test
    • automatically created in postrges docker via .env
    • this avoids localdev data pollution while testing
    • playwright still uses the normal running app and database

Minor changes:

  • upgraded all dependencies in frontend
  • fixed python version to <13 because i got errors on python 13
  • improved configuration of tooling so it works in vscode (eg biome)
  • improved VSCode configuration + setting.example.json (to avoid overwriting local settings)

Screenshots

home:
image
items:
image
settings:
image

add item:
image

mobile view:
image
image

@peter-cognicodepeter-cognicode changed the title upgrade backend and frontend to latestBig upgrade: ChakraUI v3, Navbar header, Fastapi service & repository structure, unittest db isolation, and more!Jan 15, 2025
@peter-cognicodepeter-cognicode changed the title Big upgrade: ChakraUI v3, Navbar header, Fastapi service & repository structure, unittest db isolation, and more!Big upgrade: ChakraUI v3, Fastapi service & repository structure, Navbar header, backend unittest db isolation, and more!Jan 15, 2025
@peter-cognicodepeter-cognicode changed the title Big upgrade: ChakraUI v3, Fastapi service & repository structure, Navbar header, backend unittest db isolation, and more!Big upgrade: ChakraUI v3, Fastapi service & repository structure, better navbar header, backend unittest db isolation, and more!Jan 15, 2025
@peter-cognicode
peter-cognicodeforce-pushed the upgrade-backend-frontend branch 5 times, most recently from 97d7183 to f23cc0cCompareJanuary 15, 2025 21:21
@tiangolo

Copy link
Copy Markdown
Member

Thanks for your interest! ☕

This PR has many changes for different things. It would be necessary to split it into different PRs for each individual topic that needs to be reviewed, tweaked, and latter accepted or rejected. But if everything is together in a single PR it's not possible to handle each subject individually. 🥲

One of the big changes here is the migration to Chakra UI v3, this was handled in this other PR: #1496. We already had it in the backlog with a plan to handle it, ensure the styles kept consistent, etc.

For the other changes, apart from being in individual PRs, it might also be better to start with a discussion with your ideas to see if I would want to have them in the project before you invest too much time in working on them.

For now I'll pass on this one, but if you want, feel free to create new discussions or PRs with individual ideas. 🤓 🍰

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@peter-cognicode@tiangolo
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Big upgrade: ChakraUI v3, Fastapi service & repository structure, better navbar header, backend unittest db isolation, and more! - #1461

Closed
peter-cognicode wants to merge 1 commit into
fastapi:masterfrom
peter-cognicode:upgrade-backend-frontend
Closed

Big upgrade: ChakraUI v3, Fastapi service & repository structure, better navbar header, backend unittest db isolation, and more!#1461
peter-cognicode wants to merge 1 commit into
fastapi:masterfrom
peter-cognicode:upgrade-backend-frontend

Conversation

@peter-cognicode

@peter-cognicodepeter-cognicode commented Jan 15, 2025

Copy link
Copy Markdown

I decided to do a big upgrade on this project to make it more ready for larger applications. Therefore i removed the crud file in favor of a service and repository structure. This helped me a lot in the past preventing duplicate code. Also i migrated the frontend to chakraui v3 and vite v6

I don't know if this is too big for you to review, please let me know how i can help to get this merged so more people can benefit from these upgrades.

Help needed / Questions:

  • Do we still want the custom theme? it felt a bit of overkill on an example template. Since chakraui changed the way of working, i opted for the default colors for now.
  • frontend client generation github action is failing.. I removed the formatter on the generated client code (./scripts/generate-client.sh), since with new biome version it gave too many exceptions. But i dont know what is going wrong now. Maybe a different python version.. im using 12 and github is using 10?

Changes

Major changes:

  • frontend to chakraui 3.3.1
    • updated all components
    • simplified form structure with label property and automatic ids
    • added custom RouteLink for tanstack router integration
    • added pagination component
    • added system default to darkmode setting page
  • frontend menu improvements
    • added top navbar with fastapi logo and better flex styling
    • improved sidebar
  • backend to service and repository structure
    • removed crud folder, it is not scalable
    • avoids duplicate code & improves folder structure for larger apps
  • backend tests using separate database app_test
    • automatically created in postrges docker via .env
    • this avoids localdev data pollution while testing
    • playwright still uses the normal running app and database

Minor changes:

  • upgraded all dependencies in frontend
  • fixed python version to <13 because i got errors on python 13
  • improved configuration of tooling so it works in vscode (eg biome)
  • improved VSCode configuration + setting.example.json (to avoid overwriting local settings)

Screenshots

home:
image
items:
image
settings:
image

add item:
image

mobile view:
image
image

@peter-cognicodepeter-cognicode changed the title upgrade backend and frontend to latestBig upgrade: ChakraUI v3, Navbar header, Fastapi service & repository structure, unittest db isolation, and more!Jan 15, 2025
@peter-cognicodepeter-cognicode changed the title Big upgrade: ChakraUI v3, Navbar header, Fastapi service & repository structure, unittest db isolation, and more!Big upgrade: ChakraUI v3, Fastapi service & repository structure, Navbar header, backend unittest db isolation, and more!Jan 15, 2025
@peter-cognicodepeter-cognicode changed the title Big upgrade: ChakraUI v3, Fastapi service & repository structure, Navbar header, backend unittest db isolation, and more!Big upgrade: ChakraUI v3, Fastapi service & repository structure, better navbar header, backend unittest db isolation, and more!Jan 15, 2025
@peter-cognicode
peter-cognicodeforce-pushed the upgrade-backend-frontend branch 5 times, most recently from 97d7183 to f23cc0cCompareJanuary 15, 2025 21:21
@tiangolo

Copy link
Copy Markdown
Member

Thanks for your interest! ☕

This PR has many changes for different things. It would be necessary to split it into different PRs for each individual topic that needs to be reviewed, tweaked, and latter accepted or rejected. But if everything is together in a single PR it's not possible to handle each subject individually. 🥲

One of the big changes here is the migration to Chakra UI v3, this was handled in this other PR: #1496. We already had it in the backlog with a plan to handle it, ensure the styles kept consistent, etc.

For the other changes, apart from being in individual PRs, it might also be better to start with a discussion with your ideas to see if I would want to have them in the project before you invest too much time in working on them.

For now I'll pass on this one, but if you want, feel free to create new discussions or PRs with individual ideas. 🤓 🍰

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@peter-cognicode@tiangolo
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Big upgrade: ChakraUI v3, Fastapi service & repository structure, better navbar header, backend unittest db isolation, and more! - #1461

Closed
peter-cognicode wants to merge 1 commit into
fastapi:masterfrom
peter-cognicode:upgrade-backend-frontend
Closed

Big upgrade: ChakraUI v3, Fastapi service & repository structure, better navbar header, backend unittest db isolation, and more!#1461
peter-cognicode wants to merge 1 commit into
fastapi:masterfrom
peter-cognicode:upgrade-backend-frontend

Conversation

@peter-cognicode

@peter-cognicodepeter-cognicode commented Jan 15, 2025

Copy link
Copy Markdown

I decided to do a big upgrade on this project to make it more ready for larger applications. Therefore i removed the crud file in favor of a service and repository structure. This helped me a lot in the past preventing duplicate code. Also i migrated the frontend to chakraui v3 and vite v6

I don't know if this is too big for you to review, please let me know how i can help to get this merged so more people can benefit from these upgrades.

Help needed / Questions:

  • Do we still want the custom theme? it felt a bit of overkill on an example template. Since chakraui changed the way of working, i opted for the default colors for now.
  • frontend client generation github action is failing.. I removed the formatter on the generated client code (./scripts/generate-client.sh), since with new biome version it gave too many exceptions. But i dont know what is going wrong now. Maybe a different python version.. im using 12 and github is using 10?

Changes

Major changes:

  • frontend to chakraui 3.3.1
    • updated all components
    • simplified form structure with label property and automatic ids
    • added custom RouteLink for tanstack router integration
    • added pagination component
    • added system default to darkmode setting page
  • frontend menu improvements
    • added top navbar with fastapi logo and better flex styling
    • improved sidebar
  • backend to service and repository structure
    • removed crud folder, it is not scalable
    • avoids duplicate code & improves folder structure for larger apps
  • backend tests using separate database app_test
    • automatically created in postrges docker via .env
    • this avoids localdev data pollution while testing
    • playwright still uses the normal running app and database

Minor changes:

  • upgraded all dependencies in frontend
  • fixed python version to <13 because i got errors on python 13
  • improved configuration of tooling so it works in vscode (eg biome)
  • improved VSCode configuration + setting.example.json (to avoid overwriting local settings)

Screenshots

home:
image
items:
image
settings:
image

add item:
image

mobile view:
image
image

@peter-cognicodepeter-cognicode changed the title upgrade backend and frontend to latestBig upgrade: ChakraUI v3, Navbar header, Fastapi service & repository structure, unittest db isolation, and more!Jan 15, 2025
@peter-cognicodepeter-cognicode changed the title Big upgrade: ChakraUI v3, Navbar header, Fastapi service & repository structure, unittest db isolation, and more!Big upgrade: ChakraUI v3, Fastapi service & repository structure, Navbar header, backend unittest db isolation, and more!Jan 15, 2025
@peter-cognicodepeter-cognicode changed the title Big upgrade: ChakraUI v3, Fastapi service & repository structure, Navbar header, backend unittest db isolation, and more!Big upgrade: ChakraUI v3, Fastapi service & repository structure, better navbar header, backend unittest db isolation, and more!Jan 15, 2025
@peter-cognicode
peter-cognicodeforce-pushed the upgrade-backend-frontend branch 5 times, most recently from 97d7183 to f23cc0cCompareJanuary 15, 2025 21:21
@tiangolo

Copy link
Copy Markdown
Member

Thanks for your interest! ☕

This PR has many changes for different things. It would be necessary to split it into different PRs for each individual topic that needs to be reviewed, tweaked, and latter accepted or rejected. But if everything is together in a single PR it's not possible to handle each subject individually. 🥲

One of the big changes here is the migration to Chakra UI v3, this was handled in this other PR: #1496. We already had it in the backlog with a plan to handle it, ensure the styles kept consistent, etc.

For the other changes, apart from being in individual PRs, it might also be better to start with a discussion with your ideas to see if I would want to have them in the project before you invest too much time in working on them.

For now I'll pass on this one, but if you want, feel free to create new discussions or PRs with individual ideas. 🤓 🍰

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@peter-cognicode@tiangolo
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Big upgrade: ChakraUI v3, Fastapi service & repository structure, better navbar header, backend unittest db isolation, and more! - #1461

Closed
peter-cognicode wants to merge 1 commit into
fastapi:masterfrom
peter-cognicode:upgrade-backend-frontend
Closed

Big upgrade: ChakraUI v3, Fastapi service & repository structure, better navbar header, backend unittest db isolation, and more!#1461
peter-cognicode wants to merge 1 commit into
fastapi:masterfrom
peter-cognicode:upgrade-backend-frontend

Conversation

@peter-cognicode

@peter-cognicodepeter-cognicode commented Jan 15, 2025

Copy link
Copy Markdown

I decided to do a big upgrade on this project to make it more ready for larger applications. Therefore i removed the crud file in favor of a service and repository structure. This helped me a lot in the past preventing duplicate code. Also i migrated the frontend to chakraui v3 and vite v6

I don't know if this is too big for you to review, please let me know how i can help to get this merged so more people can benefit from these upgrades.

Help needed / Questions:

  • Do we still want the custom theme? it felt a bit of overkill on an example template. Since chakraui changed the way of working, i opted for the default colors for now.
  • frontend client generation github action is failing.. I removed the formatter on the generated client code (./scripts/generate-client.sh), since with new biome version it gave too many exceptions. But i dont know what is going wrong now. Maybe a different python version.. im using 12 and github is using 10?

Changes

Major changes:

  • frontend to chakraui 3.3.1
    • updated all components
    • simplified form structure with label property and automatic ids
    • added custom RouteLink for tanstack router integration
    • added pagination component
    • added system default to darkmode setting page
  • frontend menu improvements
    • added top navbar with fastapi logo and better flex styling
    • improved sidebar
  • backend to service and repository structure
    • removed crud folder, it is not scalable
    • avoids duplicate code & improves folder structure for larger apps
  • backend tests using separate database app_test
    • automatically created in postrges docker via .env
    • this avoids localdev data pollution while testing
    • playwright still uses the normal running app and database

Minor changes:

  • upgraded all dependencies in frontend
  • fixed python version to <13 because i got errors on python 13
  • improved configuration of tooling so it works in vscode (eg biome)
  • improved VSCode configuration + setting.example.json (to avoid overwriting local settings)

Screenshots

home:
image
items:
image
settings:
image

add item:
image

mobile view:
image
image

@peter-cognicodepeter-cognicode changed the title upgrade backend and frontend to latestBig upgrade: ChakraUI v3, Navbar header, Fastapi service & repository structure, unittest db isolation, and more!Jan 15, 2025
@peter-cognicodepeter-cognicode changed the title Big upgrade: ChakraUI v3, Navbar header, Fastapi service & repository structure, unittest db isolation, and more!Big upgrade: ChakraUI v3, Fastapi service & repository structure, Navbar header, backend unittest db isolation, and more!Jan 15, 2025
@peter-cognicodepeter-cognicode changed the title Big upgrade: ChakraUI v3, Fastapi service & repository structure, Navbar header, backend unittest db isolation, and more!Big upgrade: ChakraUI v3, Fastapi service & repository structure, better navbar header, backend unittest db isolation, and more!Jan 15, 2025
@peter-cognicode
peter-cognicodeforce-pushed the upgrade-backend-frontend branch 5 times, most recently from 97d7183 to f23cc0cCompareJanuary 15, 2025 21:21
@tiangolo

Copy link
Copy Markdown
Member

Thanks for your interest! ☕

This PR has many changes for different things. It would be necessary to split it into different PRs for each individual topic that needs to be reviewed, tweaked, and latter accepted or rejected. But if everything is together in a single PR it's not possible to handle each subject individually. 🥲

One of the big changes here is the migration to Chakra UI v3, this was handled in this other PR: #1496. We already had it in the backlog with a plan to handle it, ensure the styles kept consistent, etc.

For the other changes, apart from being in individual PRs, it might also be better to start with a discussion with your ideas to see if I would want to have them in the project before you invest too much time in working on them.

For now I'll pass on this one, but if you want, feel free to create new discussions or PRs with individual ideas. 🤓 🍰

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@peter-cognicode@tiangolo
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Big upgrade: ChakraUI v3, Fastapi service & repository structure, better navbar header, backend unittest db isolation, and more! - #1461

Closed
peter-cognicode wants to merge 1 commit into
fastapi:masterfrom
peter-cognicode:upgrade-backend-frontend
Closed

Big upgrade: ChakraUI v3, Fastapi service & repository structure, better navbar header, backend unittest db isolation, and more!#1461
peter-cognicode wants to merge 1 commit into
fastapi:masterfrom
peter-cognicode:upgrade-backend-frontend

Conversation

@peter-cognicode

@peter-cognicodepeter-cognicode commented Jan 15, 2025

Copy link
Copy Markdown

I decided to do a big upgrade on this project to make it more ready for larger applications. Therefore i removed the crud file in favor of a service and repository structure. This helped me a lot in the past preventing duplicate code. Also i migrated the frontend to chakraui v3 and vite v6

I don't know if this is too big for you to review, please let me know how i can help to get this merged so more people can benefit from these upgrades.

Help needed / Questions:

  • Do we still want the custom theme? it felt a bit of overkill on an example template. Since chakraui changed the way of working, i opted for the default colors for now.
  • frontend client generation github action is failing.. I removed the formatter on the generated client code (./scripts/generate-client.sh), since with new biome version it gave too many exceptions. But i dont know what is going wrong now. Maybe a different python version.. im using 12 and github is using 10?

Changes

Major changes:

  • frontend to chakraui 3.3.1
    • updated all components
    • simplified form structure with label property and automatic ids
    • added custom RouteLink for tanstack router integration
    • added pagination component
    • added system default to darkmode setting page
  • frontend menu improvements
    • added top navbar with fastapi logo and better flex styling
    • improved sidebar
  • backend to service and repository structure
    • removed crud folder, it is not scalable
    • avoids duplicate code & improves folder structure for larger apps
  • backend tests using separate database app_test
    • automatically created in postrges docker via .env
    • this avoids localdev data pollution while testing
    • playwright still uses the normal running app and database

Minor changes:

  • upgraded all dependencies in frontend
  • fixed python version to <13 because i got errors on python 13
  • improved configuration of tooling so it works in vscode (eg biome)
  • improved VSCode configuration + setting.example.json (to avoid overwriting local settings)

Screenshots

home:
image
items:
image
settings:
image

add item:
image

mobile view:
image
image

@peter-cognicodepeter-cognicode changed the title upgrade backend and frontend to latestBig upgrade: ChakraUI v3, Navbar header, Fastapi service & repository structure, unittest db isolation, and more!Jan 15, 2025
@peter-cognicodepeter-cognicode changed the title Big upgrade: ChakraUI v3, Navbar header, Fastapi service & repository structure, unittest db isolation, and more!Big upgrade: ChakraUI v3, Fastapi service & repository structure, Navbar header, backend unittest db isolation, and more!Jan 15, 2025
@peter-cognicodepeter-cognicode changed the title Big upgrade: ChakraUI v3, Fastapi service & repository structure, Navbar header, backend unittest db isolation, and more!Big upgrade: ChakraUI v3, Fastapi service & repository structure, better navbar header, backend unittest db isolation, and more!Jan 15, 2025
@peter-cognicode
peter-cognicodeforce-pushed the upgrade-backend-frontend branch 5 times, most recently from 97d7183 to f23cc0cCompareJanuary 15, 2025 21:21
@tiangolo

Copy link
Copy Markdown
Member

Thanks for your interest! ☕

This PR has many changes for different things. It would be necessary to split it into different PRs for each individual topic that needs to be reviewed, tweaked, and latter accepted or rejected. But if everything is together in a single PR it's not possible to handle each subject individually. 🥲

One of the big changes here is the migration to Chakra UI v3, this was handled in this other PR: #1496. We already had it in the backlog with a plan to handle it, ensure the styles kept consistent, etc.

For the other changes, apart from being in individual PRs, it might also be better to start with a discussion with your ideas to see if I would want to have them in the project before you invest too much time in working on them.

For now I'll pass on this one, but if you want, feel free to create new discussions or PRs with individual ideas. 🤓 🍰

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@peter-cognicode@tiangolo
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Big upgrade: ChakraUI v3, Fastapi service & repository structure, better navbar header, backend unittest db isolation, and more! - #1461

Closed
peter-cognicode wants to merge 1 commit into
fastapi:masterfrom
peter-cognicode:upgrade-backend-frontend
Closed

Big upgrade: ChakraUI v3, Fastapi service & repository structure, better navbar header, backend unittest db isolation, and more!#1461
peter-cognicode wants to merge 1 commit into
fastapi:masterfrom
peter-cognicode:upgrade-backend-frontend

Conversation

@peter-cognicode

@peter-cognicodepeter-cognicode commented Jan 15, 2025

Copy link
Copy Markdown

I decided to do a big upgrade on this project to make it more ready for larger applications. Therefore i removed the crud file in favor of a service and repository structure. This helped me a lot in the past preventing duplicate code. Also i migrated the frontend to chakraui v3 and vite v6

I don't know if this is too big for you to review, please let me know how i can help to get this merged so more people can benefit from these upgrades.

Help needed / Questions:

  • Do we still want the custom theme? it felt a bit of overkill on an example template. Since chakraui changed the way of working, i opted for the default colors for now.
  • frontend client generation github action is failing.. I removed the formatter on the generated client code (./scripts/generate-client.sh), since with new biome version it gave too many exceptions. But i dont know what is going wrong now. Maybe a different python version.. im using 12 and github is using 10?

Changes

Major changes:

  • frontend to chakraui 3.3.1
    • updated all components
    • simplified form structure with label property and automatic ids
    • added custom RouteLink for tanstack router integration
    • added pagination component
    • added system default to darkmode setting page
  • frontend menu improvements
    • added top navbar with fastapi logo and better flex styling
    • improved sidebar
  • backend to service and repository structure
    • removed crud folder, it is not scalable
    • avoids duplicate code & improves folder structure for larger apps
  • backend tests using separate database app_test
    • automatically created in postrges docker via .env
    • this avoids localdev data pollution while testing
    • playwright still uses the normal running app and database

Minor changes:

  • upgraded all dependencies in frontend
  • fixed python version to <13 because i got errors on python 13
  • improved configuration of tooling so it works in vscode (eg biome)
  • improved VSCode configuration + setting.example.json (to avoid overwriting local settings)

Screenshots

home:
image
items:
image
settings:
image

add item:
image

mobile view:
image
image

@peter-cognicodepeter-cognicode changed the title upgrade backend and frontend to latestBig upgrade: ChakraUI v3, Navbar header, Fastapi service & repository structure, unittest db isolation, and more!Jan 15, 2025
@peter-cognicodepeter-cognicode changed the title Big upgrade: ChakraUI v3, Navbar header, Fastapi service & repository structure, unittest db isolation, and more!Big upgrade: ChakraUI v3, Fastapi service & repository structure, Navbar header, backend unittest db isolation, and more!Jan 15, 2025
@peter-cognicodepeter-cognicode changed the title Big upgrade: ChakraUI v3, Fastapi service & repository structure, Navbar header, backend unittest db isolation, and more!Big upgrade: ChakraUI v3, Fastapi service & repository structure, better navbar header, backend unittest db isolation, and more!Jan 15, 2025
@peter-cognicode
peter-cognicodeforce-pushed the upgrade-backend-frontend branch 5 times, most recently from 97d7183 to f23cc0cCompareJanuary 15, 2025 21:21
@tiangolo

Copy link
Copy Markdown
Member

Thanks for your interest! ☕

This PR has many changes for different things. It would be necessary to split it into different PRs for each individual topic that needs to be reviewed, tweaked, and latter accepted or rejected. But if everything is together in a single PR it's not possible to handle each subject individually. 🥲

One of the big changes here is the migration to Chakra UI v3, this was handled in this other PR: #1496. We already had it in the backlog with a plan to handle it, ensure the styles kept consistent, etc.

For the other changes, apart from being in individual PRs, it might also be better to start with a discussion with your ideas to see if I would want to have them in the project before you invest too much time in working on them.

For now I'll pass on this one, but if you want, feel free to create new discussions or PRs with individual ideas. 🤓 🍰

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@peter-cognicode@tiangolo