diff --git a/docs/JOIN_TEAM.md b/docs/JOIN_TEAM.md index c1f9e6c014..ed04ca8d2d 100644 --- a/docs/JOIN_TEAM.md +++ b/docs/JOIN_TEAM.md @@ -7,35 +7,6 @@ We currently have 4 full-time people in the team - all engineers, including the We want to add up to 3 people to the team. -**You**: - -- **Passionate about joining SimpleX Chat team**: - - already use SimpleX Chat to communicate with friends/family or participate in public SimpleX Chat groups. - - passionate about privacy, security and communications. - - interested to make contributions to SimpleX Chat open-source project in your free time before we hire you, as an extended test. - -- **Exceptionally pragmatic, very fast and customer-focussed**: - - care about the customers (aka users) and about the product we build much more than about the code quality, technology stack, etc. - - believe that the simplest solution is the best. - - 2-3x faster than the most competent people you worked with. - - focus on solving only today's problems and resist engineering for the future (aka over-engineering) – see [The Duct Tape Programmer](https://www.joelonsoftware.com/2009/09/23/the-duct-tape-programmer/) and [Why I Hate Frameworks](https://medium.com/@johnfliu/why-i-hate-frameworks-6af8cbadba42). - - do not suffer from "not invented here" syndrome, at the same time interested to design and implement protocols and systems from the ground up when appropriate. - -- **Love software engineering**: - - have 5y+ of software engineering experience in complex projects, - - great understanding of the common principles: - - data structures, bits and byte manipulation - - text encoding and manipulation - - software design and algorithms - - concurrency - - networking - -- **Want to join a very early stage startup**: - - high pace and intensity, longer hours. - - a substantial part of the compensation is stock options. - - full transparency – we believe that too much [autonomy](https://twitter.com/KentBeck/status/851459129830850561) hurts learning and slows down progress. - - ## Who we are looking for ### Systems Haskell engineer @@ -63,6 +34,35 @@ You are a product UX expert who designs great user experiences directly in iOS c Knowledge of Android and Kotlin Multiplatform would be a bonus - we use Kotlin Jetpack Compose for our Android and desktop apps. +## About you + +- **Passionate about joining SimpleX Chat team**: + - already use SimpleX Chat to communicate with friends/family or participate in public SimpleX Chat groups. + - passionate about privacy, security and communications. + - interested to make contributions to SimpleX Chat open-source project in your free time before we hire you, as an extended test. + +- **Exceptionally pragmatic, very fast and customer-focussed**: + - care about the customers (aka users) and about the product we build much more than about the code quality, technology stack, etc. + - believe that the simplest solution is the best. + - 2-3x faster than the most competent people you worked with. + - focus on solving only today's problems and resist engineering for the future (aka over-engineering) – see [The Duct Tape Programmer](https://www.joelonsoftware.com/2009/09/23/the-duct-tape-programmer/) and [Why I Hate Frameworks](https://medium.com/@johnfliu/why-i-hate-frameworks-6af8cbadba42). + - do not suffer from "not invented here" syndrome, at the same time interested to design and implement protocols and systems from the ground up when appropriate. + +- **Love software engineering**: + - have 5y+ of software engineering experience in complex projects, + - great understanding of the common principles: + - data structures, bits and byte manipulation + - text encoding and manipulation + - software design and algorithms + - concurrency + - networking + +- **Want to join a very early stage startup**: + - high pace and intensity, longer hours. + - a substantial part of the compensation is stock options. + - full transparency – we believe that too much [autonomy](https://twitter.com/KentBeck/status/851459129830850561) hurts learning and slows down progress. + + ## How to join the team 1. [Install the app](../README.md#install-the-app), try using it with the friends and [join some user groups](https://github.com/simplex-chat/simplex-chat#join-user-groups) – you will discover a lot of things that need improvements. diff --git a/website/.eleventy.js b/website/.eleventy.js index fb9fe108f2..351a70f71c 100644 --- a/website/.eleventy.js +++ b/website/.eleventy.js @@ -188,6 +188,50 @@ module.exports = function (ty) { return dom.serialize() }) + ty.addFilter('wrapH3s', function (content, page) { + if (!page.url.includes("/jobs/")) { + return content + } + + const dom = new JSDOM(content) + const document = dom.window.document + + const makeBlock = (block) => { + const jobTab = document.createElement('div') + jobTab.className = "job-tab" + + const flexDiv = document.createElement('div') + flexDiv.className = "flex items-center justify-between job-tab-btn cursor-pointer" + flexDiv.innerHTML = ` + <${block.tagName}>${block.innerHTML} + + + + ` + jobTab.appendChild(flexDiv) + + const jobContent = document.createElement('div') + jobContent.className = "job-tab-content" + jobTab.appendChild(jobContent) + + block.parentNode.insertBefore(jobTab, block) + block.remove() + + let sibling = jobTab.nextElementSibling + const siblingsToMove = [] + while (sibling && !['H3', 'H2'].includes(sibling.tagName)) { + siblingsToMove.push(sibling) + sibling = sibling.nextElementSibling + } + + siblingsToMove.forEach(el => jobContent.appendChild(el)) + } + + Array.from(document.querySelectorAll("h3")).forEach(makeBlock) + + return dom.serialize() + }) + ty.addShortcode("completeRoute", (obj) => { const urlParts = obj.url.split("/") diff --git a/website/customize_docs_frontmatter.js b/website/customize_docs_frontmatter.js index 8f2546e168..efb060779e 100644 --- a/website/customize_docs_frontmatter.js +++ b/website/customize_docs_frontmatter.js @@ -54,32 +54,41 @@ Object.entries(fileLanguageMapping).forEach(([fileName, languages]) => { // Calculate the permalink based on the file's location const linkPath = path.relative(directoryPath, fullPath).replace(/\.md$/, '.html'); const permalink = `/docs/${linkPath}`.toLowerCase(); - parsedMatter.data.permalink = permalink; - // Update the frontmatter with the new languages list - parsedMatter.data.supportedLangsForDoc = languages; + if (fileName === 'JOIN_TEAM') { + parsedMatter.data.title = 'SimpleX Chat - Jobs'; + parsedMatter.data.permalink = '/jobs/index.html'; + parsedMatter.data.layout = 'layouts/jobs.html'; + parsedMatter.data.active_jobs = true; + } + else { + parsedMatter.data.permalink = permalink; - // Add the layout value - parsedMatter.data.layout = 'layouts/doc.html'; + // Update the frontmatter with the new languages list + parsedMatter.data.supportedLangsForDoc = languages; - if (fullPath.startsWith(path.join(directoryPath, langFolder))) { - // Non-English files - const [language, ...rest] = relativePath.split(path.sep).slice(1); - const enFilePath = path.join(directoryPath, ...rest); + // Add the layout value + parsedMatter.data.layout = 'layouts/doc.html'; - if (enFiles[enFilePath]) { - const enRevision = new Date(enFiles[enFilePath].revision); - const currentRevision = new Date(parsedMatter.data.revision); + if (fullPath.startsWith(path.join(directoryPath, langFolder))) { + // Non-English files + const [language, ...rest] = relativePath.split(path.sep).slice(1); + const enFilePath = path.join(directoryPath, ...rest); - const isOld = currentRevision < enRevision; + if (enFiles[enFilePath]) { + const enRevision = new Date(enFiles[enFilePath].revision); + const currentRevision = new Date(parsedMatter.data.revision); + + const isOld = currentRevision < enRevision; + // Add the version value + parsedMatter.data.version = isOld ? 'old' : 'new'; + } + } else { + // English files + enFiles[fullPath] = { revision: parsedMatter.data.revision }; // Add the version value - parsedMatter.data.version = isOld ? 'old' : 'new'; + parsedMatter.data.version = 'new'; } - } else { - // English files - enFiles[fullPath] = { revision: parsedMatter.data.revision }; - // Add the version value - parsedMatter.data.version = 'new'; } // Save the updated frontmatter and content back to the file diff --git a/website/langs/en.json b/website/langs/en.json index d9ff80f3e4..c73695de51 100644 --- a/website/langs/en.json +++ b/website/langs/en.json @@ -243,5 +243,6 @@ "f-droid-org-repo": "F-Droid.org repo", "stable-versions-built-by-f-droid-org": "Stable versions built by F-Droid.org", "releases-to-this-repo-are-done-1-2-days-later": "The releases to this repo are done 1-2 days later", - "f-droid-page-f-droid-org-repo-section-text": "SimpleX Chat and F-Droid.org repositories sign builds with the different keys. To switch, please export the chat database and re-install the app." + "f-droid-page-f-droid-org-repo-section-text": "SimpleX Chat and F-Droid.org repositories sign builds with the different keys. To switch, please export the chat database and re-install the app.", + "jobs": "Join team" } diff --git a/website/src/_includes/layouts/jobs.html b/website/src/_includes/layouts/jobs.html new file mode 100644 index 0000000000..6a68c0795f --- /dev/null +++ b/website/src/_includes/layouts/jobs.html @@ -0,0 +1,45 @@ + + + + + + + + {{ title }} + + + + + + + + + + + +
+ {% include "navbar.html" %} +
+ +
+
+
{{ content | wrapH3s(page) | safe }}
+
+
+ + {% include "footer.html" %} + + + + \ No newline at end of file diff --git a/website/src/_includes/navbar.html b/website/src/_includes/navbar.html index beb3139c2b..f62a788a72 100644 --- a/website/src/_includes/navbar.html +++ b/website/src/_includes/navbar.html @@ -100,6 +100,14 @@
+ + +
+