Skip to content

Repository files navigation

codewit.us

Website for learning how to code from unique perspectives

Getting Started

This project uses Nx to manage the monorepo and npm as the package manager. To use nx commands, install nx CLI globally: npm i -g nx

Environment Variables

Navigate to codewit.us/codewit/ and create a .env file with the following content (replace with your real values):

# FrontendYT_KEY='YOUR YOUTUBE API KEY'YT_CHANNEL_ID='YOUR CHANNEL ID'# BackendGOOGLE_REDIRECT_URL="GOOGLE AUTH REDIRECT URL"GOOGLE_CLIENT_ID="YOUR CLIENT ID"GOOGLE_CLIENT_SECRET="YOUR SECRET"COOKIE_KEY="ANY ALPHANUMERICAL STRING"# DatabaseDB_HOST=DB_HOSTDB_USER=DB_USERDB_PASSWORD=DB_PASSDB_NAME=DB_NAMEDB_PORT=PORT_NUM

Running The Application

From the codewit directory, you can run nx commands

  • Running front end: nx serve client

  • Running back end: nx serve api

  • Running both frontend and backend using docker-compose with watching for file changes enabled: docker-compose up -d && docker compose watch.

    • This will start the frontend, backend and the db in separate containers and watch for file changes in the codewit directory.

    • To stop the containers, run docker-compose down, as doing Ctrl+C will not stop the containers. it will stop the watcher but the containers will still be running.

    • To view logs from each container use docker logs -f <container-name>.

Admin Seeding

The codewit.us/codewit/api/src/scripts/seed-admins.ts file is used to seed the database with admin users. This can be done in two ways: manually using the npm command or with the provided seed.sh script, which not only handles environment variables but also provides options for both admin and data seeding.

Method 1: Manual Seeding with npm Command

To manually seed admin users, ensure the required environment variables are set in a .env file or exported in your terminal. Here are the necessary variables:

DB_HOST=localhostDB_USER=codewitus_userDB_PASSWORD=12345DB_NAME=codewitus_dbDB_PORT=5432

Once the environment variables are set, you can run the npm command directly. For example, to seed admin users with the emails abc@example.com and def@example.com, run:

npm run seed-admins -- --admin abc@example.com def@example.com

Method 2: Using seed.sh Script with Automatic Environment Setup

The seed.sh script automates environment variable setup, as well as admin and data seeding, making it easier to initialize the database. The script checks for required environment variables, setting any missing ones to default values, and provides options for various seeding needs.

To seed emails as admins using seed.sh execute the following:

./seed.sh -e abc@example.com def@example.com

To seed the database with general data, using a single emial for roster setup, run:

./seed.sh -d abc@example.com

To seed the database with both admin emails and general data (using the first email for data seeding), run:

./seed.sh -b abc@example.com def@example.com

Optional: Use a Custom Postgres Port

If your machine already has a local Postgres instance running on the default port (5432), you can specify a different port when running the seed script using the -p flag:

./seed.sh -p 5440 -e abc@example.com

For more details on all available options, you can use the -h flag to display the help information, which lists each command and provides usage examples.

Contributing

See the contributing guide.

Software Overview

An overview of the features of the software is available in our roadmap

About

Website for learning how to code from unique perspectives

Resources

Contributing

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
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;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - codewit-us/codewit.us: Website for learning how to code from unique perspectives · GitHub
Skip to content

Repository files navigation

codewit.us

Website for learning how to code from unique perspectives

Getting Started

This project uses Nx to manage the monorepo and npm as the package manager. To use nx commands, install nx CLI globally: npm i -g nx

Environment Variables

Navigate to codewit.us/codewit/ and create a .env file with the following content (replace with your real values):

# FrontendYT_KEY='YOUR YOUTUBE API KEY'YT_CHANNEL_ID='YOUR CHANNEL ID'# BackendGOOGLE_REDIRECT_URL="GOOGLE AUTH REDIRECT URL"GOOGLE_CLIENT_ID="YOUR CLIENT ID"GOOGLE_CLIENT_SECRET="YOUR SECRET"COOKIE_KEY="ANY ALPHANUMERICAL STRING"# DatabaseDB_HOST=DB_HOSTDB_USER=DB_USERDB_PASSWORD=DB_PASSDB_NAME=DB_NAMEDB_PORT=PORT_NUM

Running The Application

From the codewit directory, you can run nx commands

  • Running front end: nx serve client

  • Running back end: nx serve api

  • Running both frontend and backend using docker-compose with watching for file changes enabled: docker-compose up -d && docker compose watch.

    • This will start the frontend, backend and the db in separate containers and watch for file changes in the codewit directory.

    • To stop the containers, run docker-compose down, as doing Ctrl+C will not stop the containers. it will stop the watcher but the containers will still be running.

    • To view logs from each container use docker logs -f <container-name>.

Admin Seeding

The codewit.us/codewit/api/src/scripts/seed-admins.ts file is used to seed the database with admin users. This can be done in two ways: manually using the npm command or with the provided seed.sh script, which not only handles environment variables but also provides options for both admin and data seeding.

Method 1: Manual Seeding with npm Command

To manually seed admin users, ensure the required environment variables are set in a .env file or exported in your terminal. Here are the necessary variables:

DB_HOST=localhostDB_USER=codewitus_userDB_PASSWORD=12345DB_NAME=codewitus_dbDB_PORT=5432

Once the environment variables are set, you can run the npm command directly. For example, to seed admin users with the emails abc@example.com and def@example.com, run:

npm run seed-admins -- --admin abc@example.com def@example.com

Method 2: Using seed.sh Script with Automatic Environment Setup

The seed.sh script automates environment variable setup, as well as admin and data seeding, making it easier to initialize the database. The script checks for required environment variables, setting any missing ones to default values, and provides options for various seeding needs.

To seed emails as admins using seed.sh execute the following:

./seed.sh -e abc@example.com def@example.com

To seed the database with general data, using a single emial for roster setup, run:

./seed.sh -d abc@example.com

To seed the database with both admin emails and general data (using the first email for data seeding), run:

./seed.sh -b abc@example.com def@example.com

Optional: Use a Custom Postgres Port

If your machine already has a local Postgres instance running on the default port (5432), you can specify a different port when running the seed script using the -p flag:

./seed.sh -p 5440 -e abc@example.com

For more details on all available options, you can use the -h flag to display the help information, which lists each command and provides usage examples.

Contributing

See the contributing guide.

Software Overview

An overview of the features of the software is available in our roadmap

About

Website for learning how to code from unique perspectives

Resources

Contributing

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

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

Repository files navigation

codewit.us

Website for learning how to code from unique perspectives

Getting Started

This project uses Nx to manage the monorepo and npm as the package manager. To use nx commands, install nx CLI globally: npm i -g nx

Environment Variables

Navigate to codewit.us/codewit/ and create a .env file with the following content (replace with your real values):

# FrontendYT_KEY='YOUR YOUTUBE API KEY'YT_CHANNEL_ID='YOUR CHANNEL ID'# BackendGOOGLE_REDIRECT_URL="GOOGLE AUTH REDIRECT URL"GOOGLE_CLIENT_ID="YOUR CLIENT ID"GOOGLE_CLIENT_SECRET="YOUR SECRET"COOKIE_KEY="ANY ALPHANUMERICAL STRING"# DatabaseDB_HOST=DB_HOSTDB_USER=DB_USERDB_PASSWORD=DB_PASSDB_NAME=DB_NAMEDB_PORT=PORT_NUM

Running The Application

From the codewit directory, you can run nx commands

  • Running front end: nx serve client

  • Running back end: nx serve api

  • Running both frontend and backend using docker-compose with watching for file changes enabled: docker-compose up -d && docker compose watch.

    • This will start the frontend, backend and the db in separate containers and watch for file changes in the codewit directory.

    • To stop the containers, run docker-compose down, as doing Ctrl+C will not stop the containers. it will stop the watcher but the containers will still be running.

    • To view logs from each container use docker logs -f <container-name>.

Admin Seeding

The codewit.us/codewit/api/src/scripts/seed-admins.ts file is used to seed the database with admin users. This can be done in two ways: manually using the npm command or with the provided seed.sh script, which not only handles environment variables but also provides options for both admin and data seeding.

Method 1: Manual Seeding with npm Command

To manually seed admin users, ensure the required environment variables are set in a .env file or exported in your terminal. Here are the necessary variables:

DB_HOST=localhostDB_USER=codewitus_userDB_PASSWORD=12345DB_NAME=codewitus_dbDB_PORT=5432

Once the environment variables are set, you can run the npm command directly. For example, to seed admin users with the emails abc@example.com and def@example.com, run:

npm run seed-admins -- --admin abc@example.com def@example.com

Method 2: Using seed.sh Script with Automatic Environment Setup

The seed.sh script automates environment variable setup, as well as admin and data seeding, making it easier to initialize the database. The script checks for required environment variables, setting any missing ones to default values, and provides options for various seeding needs.

To seed emails as admins using seed.sh execute the following:

./seed.sh -e abc@example.com def@example.com

To seed the database with general data, using a single emial for roster setup, run:

./seed.sh -d abc@example.com

To seed the database with both admin emails and general data (using the first email for data seeding), run:

./seed.sh -b abc@example.com def@example.com

Optional: Use a Custom Postgres Port

If your machine already has a local Postgres instance running on the default port (5432), you can specify a different port when running the seed script using the -p flag:

./seed.sh -p 5440 -e abc@example.com

For more details on all available options, you can use the -h flag to display the help information, which lists each command and provides usage examples.

Contributing

See the contributing guide.

Software Overview

An overview of the features of the software is available in our roadmap

About

Website for learning how to code from unique perspectives

Resources

Contributing

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', '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('^' + ".*" + ' GitHub - codewit-us/codewit.us: Website for learning how to code from unique perspectives · GitHub
Skip to content

Repository files navigation

codewit.us

Website for learning how to code from unique perspectives

Getting Started

This project uses Nx to manage the monorepo and npm as the package manager. To use nx commands, install nx CLI globally: npm i -g nx

Environment Variables

Navigate to codewit.us/codewit/ and create a .env file with the following content (replace with your real values):

# FrontendYT_KEY='YOUR YOUTUBE API KEY'YT_CHANNEL_ID='YOUR CHANNEL ID'# BackendGOOGLE_REDIRECT_URL="GOOGLE AUTH REDIRECT URL"GOOGLE_CLIENT_ID="YOUR CLIENT ID"GOOGLE_CLIENT_SECRET="YOUR SECRET"COOKIE_KEY="ANY ALPHANUMERICAL STRING"# DatabaseDB_HOST=DB_HOSTDB_USER=DB_USERDB_PASSWORD=DB_PASSDB_NAME=DB_NAMEDB_PORT=PORT_NUM

Running The Application

From the codewit directory, you can run nx commands

  • Running front end: nx serve client

  • Running back end: nx serve api

  • Running both frontend and backend using docker-compose with watching for file changes enabled: docker-compose up -d && docker compose watch.

    • This will start the frontend, backend and the db in separate containers and watch for file changes in the codewit directory.

    • To stop the containers, run docker-compose down, as doing Ctrl+C will not stop the containers. it will stop the watcher but the containers will still be running.

    • To view logs from each container use docker logs -f <container-name>.

Admin Seeding

The codewit.us/codewit/api/src/scripts/seed-admins.ts file is used to seed the database with admin users. This can be done in two ways: manually using the npm command or with the provided seed.sh script, which not only handles environment variables but also provides options for both admin and data seeding.

Method 1: Manual Seeding with npm Command

To manually seed admin users, ensure the required environment variables are set in a .env file or exported in your terminal. Here are the necessary variables:

DB_HOST=localhostDB_USER=codewitus_userDB_PASSWORD=12345DB_NAME=codewitus_dbDB_PORT=5432

Once the environment variables are set, you can run the npm command directly. For example, to seed admin users with the emails abc@example.com and def@example.com, run:

npm run seed-admins -- --admin abc@example.com def@example.com

Method 2: Using seed.sh Script with Automatic Environment Setup

The seed.sh script automates environment variable setup, as well as admin and data seeding, making it easier to initialize the database. The script checks for required environment variables, setting any missing ones to default values, and provides options for various seeding needs.

To seed emails as admins using seed.sh execute the following:

./seed.sh -e abc@example.com def@example.com

To seed the database with general data, using a single emial for roster setup, run:

./seed.sh -d abc@example.com

To seed the database with both admin emails and general data (using the first email for data seeding), run:

./seed.sh -b abc@example.com def@example.com

Optional: Use a Custom Postgres Port

If your machine already has a local Postgres instance running on the default port (5432), you can specify a different port when running the seed script using the -p flag:

./seed.sh -p 5440 -e abc@example.com

For more details on all available options, you can use the -h flag to display the help information, which lists each command and provides usage examples.

Contributing

See the contributing guide.

Software Overview

An overview of the features of the software is available in our roadmap

About

Website for learning how to code from unique perspectives

Resources

Contributing

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, '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" + ' GitHub - codewit-us/codewit.us: Website for learning how to code from unique perspectives · GitHub
Skip to content

Repository files navigation

codewit.us

Website for learning how to code from unique perspectives

Getting Started

This project uses Nx to manage the monorepo and npm as the package manager. To use nx commands, install nx CLI globally: npm i -g nx

Environment Variables

Navigate to codewit.us/codewit/ and create a .env file with the following content (replace with your real values):

# FrontendYT_KEY='YOUR YOUTUBE API KEY'YT_CHANNEL_ID='YOUR CHANNEL ID'# BackendGOOGLE_REDIRECT_URL="GOOGLE AUTH REDIRECT URL"GOOGLE_CLIENT_ID="YOUR CLIENT ID"GOOGLE_CLIENT_SECRET="YOUR SECRET"COOKIE_KEY="ANY ALPHANUMERICAL STRING"# DatabaseDB_HOST=DB_HOSTDB_USER=DB_USERDB_PASSWORD=DB_PASSDB_NAME=DB_NAMEDB_PORT=PORT_NUM

Running The Application

From the codewit directory, you can run nx commands

  • Running front end: nx serve client

  • Running back end: nx serve api

  • Running both frontend and backend using docker-compose with watching for file changes enabled: docker-compose up -d && docker compose watch.

    • This will start the frontend, backend and the db in separate containers and watch for file changes in the codewit directory.

    • To stop the containers, run docker-compose down, as doing Ctrl+C will not stop the containers. it will stop the watcher but the containers will still be running.

    • To view logs from each container use docker logs -f <container-name>.

Admin Seeding

The codewit.us/codewit/api/src/scripts/seed-admins.ts file is used to seed the database with admin users. This can be done in two ways: manually using the npm command or with the provided seed.sh script, which not only handles environment variables but also provides options for both admin and data seeding.

Method 1: Manual Seeding with npm Command

To manually seed admin users, ensure the required environment variables are set in a .env file or exported in your terminal. Here are the necessary variables:

DB_HOST=localhostDB_USER=codewitus_userDB_PASSWORD=12345DB_NAME=codewitus_dbDB_PORT=5432

Once the environment variables are set, you can run the npm command directly. For example, to seed admin users with the emails abc@example.com and def@example.com, run:

npm run seed-admins -- --admin abc@example.com def@example.com

Method 2: Using seed.sh Script with Automatic Environment Setup

The seed.sh script automates environment variable setup, as well as admin and data seeding, making it easier to initialize the database. The script checks for required environment variables, setting any missing ones to default values, and provides options for various seeding needs.

To seed emails as admins using seed.sh execute the following:

./seed.sh -e abc@example.com def@example.com

To seed the database with general data, using a single emial for roster setup, run:

./seed.sh -d abc@example.com

To seed the database with both admin emails and general data (using the first email for data seeding), run:

./seed.sh -b abc@example.com def@example.com

Optional: Use a Custom Postgres Port

If your machine already has a local Postgres instance running on the default port (5432), you can specify a different port when running the seed script using the -p flag:

./seed.sh -p 5440 -e abc@example.com

For more details on all available options, you can use the -h flag to display the help information, which lists each command and provides usage examples.

Contributing

See the contributing guide.

Software Overview

An overview of the features of the software is available in our roadmap

About

Website for learning how to code from unique perspectives

Resources

Contributing

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, '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('^' + ".*" + ' GitHub - codewit-us/codewit.us: Website for learning how to code from unique perspectives · GitHub
Skip to content

Repository files navigation

codewit.us

Website for learning how to code from unique perspectives

Getting Started

This project uses Nx to manage the monorepo and npm as the package manager. To use nx commands, install nx CLI globally: npm i -g nx

Environment Variables

Navigate to codewit.us/codewit/ and create a .env file with the following content (replace with your real values):

# FrontendYT_KEY='YOUR YOUTUBE API KEY'YT_CHANNEL_ID='YOUR CHANNEL ID'# BackendGOOGLE_REDIRECT_URL="GOOGLE AUTH REDIRECT URL"GOOGLE_CLIENT_ID="YOUR CLIENT ID"GOOGLE_CLIENT_SECRET="YOUR SECRET"COOKIE_KEY="ANY ALPHANUMERICAL STRING"# DatabaseDB_HOST=DB_HOSTDB_USER=DB_USERDB_PASSWORD=DB_PASSDB_NAME=DB_NAMEDB_PORT=PORT_NUM

Running The Application

From the codewit directory, you can run nx commands

  • Running front end: nx serve client

  • Running back end: nx serve api

  • Running both frontend and backend using docker-compose with watching for file changes enabled: docker-compose up -d && docker compose watch.

    • This will start the frontend, backend and the db in separate containers and watch for file changes in the codewit directory.

    • To stop the containers, run docker-compose down, as doing Ctrl+C will not stop the containers. it will stop the watcher but the containers will still be running.

    • To view logs from each container use docker logs -f <container-name>.

Admin Seeding

The codewit.us/codewit/api/src/scripts/seed-admins.ts file is used to seed the database with admin users. This can be done in two ways: manually using the npm command or with the provided seed.sh script, which not only handles environment variables but also provides options for both admin and data seeding.

Method 1: Manual Seeding with npm Command

To manually seed admin users, ensure the required environment variables are set in a .env file or exported in your terminal. Here are the necessary variables:

DB_HOST=localhostDB_USER=codewitus_userDB_PASSWORD=12345DB_NAME=codewitus_dbDB_PORT=5432

Once the environment variables are set, you can run the npm command directly. For example, to seed admin users with the emails abc@example.com and def@example.com, run:

npm run seed-admins -- --admin abc@example.com def@example.com

Method 2: Using seed.sh Script with Automatic Environment Setup

The seed.sh script automates environment variable setup, as well as admin and data seeding, making it easier to initialize the database. The script checks for required environment variables, setting any missing ones to default values, and provides options for various seeding needs.

To seed emails as admins using seed.sh execute the following:

./seed.sh -e abc@example.com def@example.com

To seed the database with general data, using a single emial for roster setup, run:

./seed.sh -d abc@example.com

To seed the database with both admin emails and general data (using the first email for data seeding), run:

./seed.sh -b abc@example.com def@example.com

Optional: Use a Custom Postgres Port

If your machine already has a local Postgres instance running on the default port (5432), you can specify a different port when running the seed script using the -p flag:

./seed.sh -p 5440 -e abc@example.com

For more details on all available options, you can use the -h flag to display the help information, which lists each command and provides usage examples.

Contributing

See the contributing guide.

Software Overview

An overview of the features of the software is available in our roadmap

About

Website for learning how to code from unique perspectives

Resources

Contributing

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, '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); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - codewit-us/codewit.us: Website for learning how to code from unique perspectives · GitHub
Skip to content

Repository files navigation

codewit.us

Website for learning how to code from unique perspectives

Getting Started

This project uses Nx to manage the monorepo and npm as the package manager. To use nx commands, install nx CLI globally: npm i -g nx

Environment Variables

Navigate to codewit.us/codewit/ and create a .env file with the following content (replace with your real values):

# FrontendYT_KEY='YOUR YOUTUBE API KEY'YT_CHANNEL_ID='YOUR CHANNEL ID'# BackendGOOGLE_REDIRECT_URL="GOOGLE AUTH REDIRECT URL"GOOGLE_CLIENT_ID="YOUR CLIENT ID"GOOGLE_CLIENT_SECRET="YOUR SECRET"COOKIE_KEY="ANY ALPHANUMERICAL STRING"# DatabaseDB_HOST=DB_HOSTDB_USER=DB_USERDB_PASSWORD=DB_PASSDB_NAME=DB_NAMEDB_PORT=PORT_NUM

Running The Application

From the codewit directory, you can run nx commands

  • Running front end: nx serve client

  • Running back end: nx serve api

  • Running both frontend and backend using docker-compose with watching for file changes enabled: docker-compose up -d && docker compose watch.

    • This will start the frontend, backend and the db in separate containers and watch for file changes in the codewit directory.

    • To stop the containers, run docker-compose down, as doing Ctrl+C will not stop the containers. it will stop the watcher but the containers will still be running.

    • To view logs from each container use docker logs -f <container-name>.

Admin Seeding

The codewit.us/codewit/api/src/scripts/seed-admins.ts file is used to seed the database with admin users. This can be done in two ways: manually using the npm command or with the provided seed.sh script, which not only handles environment variables but also provides options for both admin and data seeding.

Method 1: Manual Seeding with npm Command

To manually seed admin users, ensure the required environment variables are set in a .env file or exported in your terminal. Here are the necessary variables:

DB_HOST=localhostDB_USER=codewitus_userDB_PASSWORD=12345DB_NAME=codewitus_dbDB_PORT=5432

Once the environment variables are set, you can run the npm command directly. For example, to seed admin users with the emails abc@example.com and def@example.com, run:

npm run seed-admins -- --admin abc@example.com def@example.com

Method 2: Using seed.sh Script with Automatic Environment Setup

The seed.sh script automates environment variable setup, as well as admin and data seeding, making it easier to initialize the database. The script checks for required environment variables, setting any missing ones to default values, and provides options for various seeding needs.

To seed emails as admins using seed.sh execute the following:

./seed.sh -e abc@example.com def@example.com

To seed the database with general data, using a single emial for roster setup, run:

./seed.sh -d abc@example.com

To seed the database with both admin emails and general data (using the first email for data seeding), run:

./seed.sh -b abc@example.com def@example.com

Optional: Use a Custom Postgres Port

If your machine already has a local Postgres instance running on the default port (5432), you can specify a different port when running the seed script using the -p flag:

./seed.sh -p 5440 -e abc@example.com

For more details on all available options, you can use the -h flag to display the help information, which lists each command and provides usage examples.

Contributing

See the contributing guide.

Software Overview

An overview of the features of the software is available in our roadmap

About

Website for learning how to code from unique perspectives

Resources

Contributing

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages

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

Repository files navigation

codewit.us

Website for learning how to code from unique perspectives

Getting Started

This project uses Nx to manage the monorepo and npm as the package manager. To use nx commands, install nx CLI globally: npm i -g nx

Environment Variables

Navigate to codewit.us/codewit/ and create a .env file with the following content (replace with your real values):

# FrontendYT_KEY='YOUR YOUTUBE API KEY'YT_CHANNEL_ID='YOUR CHANNEL ID'# BackendGOOGLE_REDIRECT_URL="GOOGLE AUTH REDIRECT URL"GOOGLE_CLIENT_ID="YOUR CLIENT ID"GOOGLE_CLIENT_SECRET="YOUR SECRET"COOKIE_KEY="ANY ALPHANUMERICAL STRING"# DatabaseDB_HOST=DB_HOSTDB_USER=DB_USERDB_PASSWORD=DB_PASSDB_NAME=DB_NAMEDB_PORT=PORT_NUM

Running The Application

From the codewit directory, you can run nx commands

  • Running front end: nx serve client

  • Running back end: nx serve api

  • Running both frontend and backend using docker-compose with watching for file changes enabled: docker-compose up -d && docker compose watch.

    • This will start the frontend, backend and the db in separate containers and watch for file changes in the codewit directory.

    • To stop the containers, run docker-compose down, as doing Ctrl+C will not stop the containers. it will stop the watcher but the containers will still be running.

    • To view logs from each container use docker logs -f <container-name>.

Admin Seeding

The codewit.us/codewit/api/src/scripts/seed-admins.ts file is used to seed the database with admin users. This can be done in two ways: manually using the npm command or with the provided seed.sh script, which not only handles environment variables but also provides options for both admin and data seeding.

Method 1: Manual Seeding with npm Command

To manually seed admin users, ensure the required environment variables are set in a .env file or exported in your terminal. Here are the necessary variables:

DB_HOST=localhostDB_USER=codewitus_userDB_PASSWORD=12345DB_NAME=codewitus_dbDB_PORT=5432

Once the environment variables are set, you can run the npm command directly. For example, to seed admin users with the emails abc@example.com and def@example.com, run:

npm run seed-admins -- --admin abc@example.com def@example.com

Method 2: Using seed.sh Script with Automatic Environment Setup

The seed.sh script automates environment variable setup, as well as admin and data seeding, making it easier to initialize the database. The script checks for required environment variables, setting any missing ones to default values, and provides options for various seeding needs.

To seed emails as admins using seed.sh execute the following:

./seed.sh -e abc@example.com def@example.com

To seed the database with general data, using a single emial for roster setup, run:

./seed.sh -d abc@example.com

To seed the database with both admin emails and general data (using the first email for data seeding), run:

./seed.sh -b abc@example.com def@example.com

Optional: Use a Custom Postgres Port

If your machine already has a local Postgres instance running on the default port (5432), you can specify a different port when running the seed script using the -p flag:

./seed.sh -p 5440 -e abc@example.com

For more details on all available options, you can use the -h flag to display the help information, which lists each command and provides usage examples.

Contributing

See the contributing guide.

Software Overview

An overview of the features of the software is available in our roadmap

About

Website for learning how to code from unique perspectives

Resources

Contributing

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages