') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); Use docker compose to run database in development by SidneyNemzer · Pull Request #81 · BuildTheEarth/web · GitHub
Skip to content

Use docker compose to run database in development - #81

Merged
Nudelsuppe42 merged 5 commits into
BuildTheEarth:api/v2from
SidneyNemzer:api-v2/db-dev
Mar 11, 2026
Merged

Use docker compose to run database in development#81
Nudelsuppe42 merged 5 commits into
BuildTheEarth:api/v2from
SidneyNemzer:api-v2/db-dev

Conversation

@SidneyNemzer

Copy link
Copy Markdown
Contributor

This change allows developers to run yarn dev and, assuming docker is installed, the database will start before running the api servers.

If you don't have docker, the dev scripts will fail. Let me know if you think docker is a reasonable dependency. I could make the new scripts exit early if docker is not detected.

This change allows developers to run `yarn dev` and, assuming docker is installed, the database will start before running the api servers
@Nudelsuppe42

Copy link
Copy Markdown
Contributor

Theoretically you dont need the individual scope#script scripts as turbo will automatically only run the script in projects where the script exists (eg. db:migrate only exists in @repo/db)

@SidneyNemzer

Copy link
Copy Markdown
ContributorAuthor

@Nudelsuppe42 Ah good point. Should I remove the scopes? I will say, it's nice that the scope makes it clear the script only runs in one package. But happy to remove them.

@Nudelsuppe42

Copy link
Copy Markdown
Contributor

What about putting frontend:dev with turbo run dev --filter=frontend... in the package.json? That way we only have the core scripts in turbo.

@SidneyNemzer

Copy link
Copy Markdown
ContributorAuthor

Added dev:frontend since we already have build:api and build:frontend. What do you mean by core scripts?

@Nudelsuppe42

Copy link
Copy Markdown
Contributor

I meant dev, build, etc.

@SidneyNemzer

Copy link
Copy Markdown
ContributorAuthor

Does this need any other changes or is it ready to merge you think?

@Nudelsuppe42Nudelsuppe42 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, i'd remove the changes in turbo.json. The PG stuff looks good to me

Comment threadpackage.json
@SidneyNemzer

SidneyNemzer commented Mar 10, 2026

Copy link
Copy Markdown
ContributorAuthor

Also, i'd remove the changes in turbo.json. The PG stuff looks good to me

You mean the scope prefixes? Just removed them. I think I can't totally remove the scripts from turbo.json because of the dependency order (up -> wait -> migrate -> dev)

@Nudelsuppe42
Nudelsuppe42 merged commit ee1c071 into BuildTheEarth:api/v2Mar 11, 2026
1 check passed
@Nudelsuppe42Nudelsuppe42 added the docs Further information is requested label Mar 11, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docsFurther information is requested

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

2 participants

@SidneyNemzer@Nudelsuppe42