Open Source & Free Tools for Web Workers

Discover amazing tech resources, carefully handpicked to keep you up-to-date and elevate your efficiency. Already 1501 badass resources curated.

  • Remote Rocketship
    Sponsor

    Remote Rocketship

    Find Your Dream Remote Job. Search 100,000+ work from home jobs at top remote companies. Loved by 10,000+ remote workers

    Read more
  • Remote Rocketship
    Remote Rocketship Remote Rocketship Remote Rocketship Remote Rocketship

    Find Your Dream Remote Job. Search 100,000+ work from home jobs at top remote companies. Loved by 10,000+ remote workers

    Remote Rocketship is a powerful job search platform designed to help you land your dream remote career by uncovering thousands of opportunities that other job boards miss.

    Here are the key benefits that give you a competitive edge:

    • Access to "Hidden" Jobs: Unlike traditional job boards that require companies to pay for listings, Remote Rocketship scrapes the entire internet daily to find jobs directly from company websites. This ensures you don't miss out on positions from top companies that choose not to use paid platforms like LinkedIn.

    • A Crucial Head Start: In a competitive market, being first matters. The tool finds jobs as soon as they are posted, allowing you to submit your application before the competition even knows the role exists.

    • Effortless Job Hunting: Instead of manual searching, you can set up daily email alerts that deliver the latest openings tailored to your specific interests directly to your inbox.

    • Hyper-Targeted Search: You can filter through over 100,000 remote jobs using granular criteria such as minimum salary, tech stack (e.g., Python, AWS), visa sponsorship (H1B), or even "no degree required" roles.

    • Global and Diverse Opportunities: The platform covers a vast range of industries—including AI, Fintech, Cybersecurity, and Marketing—and tracks remote-friendly roles in the US, Canada, Europe, Brazil, and worldwide.

    • Authenticity and Trust: Built originally as a personal tool to help the founder's wife find work, the service focuses on providing legitimate, up-to-date work-from-home listings by checking company websites multiple times a day.

      The website link is an affiliate link.

  • Shipfast
    Sponsor

    Shipfast

    Ship your startup in days, not weeks. Shipfast is a NextJS boilerplate with all you need to build your SaaS, AI tool, or any other web app and make your first $ online fast.

    Read more
  • Shipfast
    Shipfast Shipfast Shipfast Shipfast Shipfast

    Ship your startup in days, not weeks. Shipfast is a NextJS boilerplate with all you need to build your SaaS, AI tool, or any other web app and make your first $ online fast.

    ShipFast is a comprehensive NextJS boilerplate designed to help entrepreneurs and developers launch startups as quickly as possible, ideally within minutes. It provides a pre-configured foundation that includes all the essential "plumbing" of a modern web application so users don't have to build common features from scratch.

    The main features of the tool include:

    • Full-Stack Infrastructure: It comes integrated with Next-Auth for user authentication (supporting Google OAuth and Magic Links) and offers out-of-the-box support for databases like MongoDB and Supabase.

    • Ready-to-Use UI Components: The boilerplate includes a wide array of React components specifically for conversion, such as pricing tables, FAQ sections, testimonials, and "Hero" sections.

    • Monetization & Communication: It features built-in integrations for Stripe subscriptions and payments, along with email handling systems for tools like Mailgun or Resend.

    • Optimized for Growth: The tool is pre-configured with SEO best practices, analytics, and customer support modules to help a new business scale.

    • Security & Reliability: It incorporates essential security features such as rate limiting, schema validation, and security headers to protect the application.

    • Centralized Customization: Most of the app's behavior is controlled through a single config.js file, which acts as the backbone of the application and simplifies the setup process.

    The project structure is designed for efficiency, with dedicated directories for API routes, database models, and library helper functions, allowing for a clean and scalable codebase.

  • WebPerl
    October 16, 2018

    WebPerl

    WebPerl uses the power of WebAssembly and Emscripten to let you run Perl 5 in the browser!

    Read more
  • WebPerl
    WebPerl

    WebPerl uses the power of WebAssembly and Emscripten to let you run Perl 5 in the browser!

    WebPerl is a project designed to run Perl in the browser.

    Core Technology and Functionality

    • WebAssembly Port: WebPerl utilizes the power of WebAssembly (Wasm) and Emscripten.

    • Direct Binary Port: Critically, WebPerl does not translate Perl code to JavaScript. Instead, it is a port of the standard perl binary to WebAssembly, ensuring users have the full power of Perl at their disposal.

    • Perl 6 Support: It offers experimental Perl 6 support.

    • Browser Interaction: Perl code running via WebPerl can interact with JavaScript elements. For example, it can target elements by ID, add event listeners, and trigger JavaScript functions like window.alert.

    • Output Handling: By default, standard output (such as the result of a print statement) goes to the JavaScript console.

    Status and Availability

    • Development Status: WebPerl is very much in beta. The developer notes that some features may not work yet, and parts of the API may still change. Feedback is appreciated.

    • Open Source: The project's sources are available on GitHub (haukex/webperl).

    • Related Tools: Beta web applications written using WebPerl are available, including the WebPerl Code Demo Editor and the WebPerl Regex Tester.

    Usage and Deployment

    • Prerequisites: To use the Quick Start method, users need a recent version of Perl (recommended v5.26 and up) and cpanm to install dependencies.

    • Deployment: WebPerl can be deployed by downloading the prebuilt ZIP archive (e.g., webperlprebuiltv0.09-beta.zip), installing dependencies via cpanm, and running plackup webperl.psgi.

    • Hosting: Content can be accessed locally via a browser at http://localhost:5000/ after running plackup. Alternatively, the contents of the ZIP archive can be hosted on a webserver of the user's choice.

    • Examples: The ZIP archive contains several examples, including webperl_demo.html.

  • Compare dates in JS
    October 16, 2018

    Compare dates in JS

    Learn how to compare two dates in JavaScript with various methods by Saruque Ahamed Mollick.

    Read more
  • Compare dates in JS
    Compare dates in JS

    Learn how to compare two dates in JavaScript with various methods by Saruque Ahamed Mollick.

    This tutorial details the methods for comparing two dates in JavaScript.

    The principal methods or "functionalities" described for date comparison are:

    1. Using Relational Operators: You can compare two dates to determine which one is greater or smaller using the relational operators: <, >, <=, and >=. Examples demonstrate that comparing date1 (2018-05-26) to date2 (2018-05-23) using these operators yields the expected boolean output (e.g., date1 > date2 is true, and date1 < date2 is false).

    2. Using getTime() for Equality Comparison: You cannot use the equality or inequality operators (==, !=, !==, ===) directly to compare the value of a date object. If two dates with identical values are compared using ==, the result will be false. If you want to use these equality operators to compare dates, you must employ the getTime() method. When getTime() is used on both dates (e.g., date1.getTime() == date2.getTime()), the comparison successfully yields true for matching dates.

  • How display:content works
    October 16, 2018

    How display:content works

    Ire Aderinokun, Frontend Developer and User Interface Designer, explains in this post how display:content really works.

    Read more
  • How display:content works
    How display:content works How display:content works

    Ire Aderinokun, Frontend Developer and User Interface Designer, explains in this post how display:content really works.

    The principal characteristics of the CSS rule display: contents are centered around controlling the element's box generation without affecting its content or underlying structure.

    1. Core Functionality and Visual Effect

    • Box Omission: When display: contents is applied, the surrounding rectangular box of the element is omitted entirely. This box normally consists of the border, padding, and margin areas.

    • Content Display: The contents of the box (the content area) are drawn as normal.

    • Conceptual Replacement: For the purposes of box generation and layout, the element is treated as if it had been replaced in the element tree by its contents. Visually, this is the same as imagining the element's opening and closing tags were omitted from the markup.

    • Contrast with display: none: Unlike display: none, which prevents both the box and its contents from being drawn, display: contents only affects the box visually.

    2. Interaction and Non-Visual Behavior

    The rule primarily affects the visual representation; it does not affect the underlying markup within the document.

    • Attributes and Targeting: The element still exists in the document and can still be selected, targeted, and interacted with using its attributes (e.g., ID). For instance, it can still be referenced using aria-labelledby.

    • JavaScript Events: Event listeners set on the element (like a click event) will still trigger normally. Interaction is possible because the contents are visible.

    • Pseudo-Elements: Pseudo-elements (::before and ::after) are considered part of the element’s children and are displayed as normal.

    • Navigation Limitations: One notable issue is that users can no longer navigate to the element using a fragment identifier (hash link).

    3. Special Behaviors for Certain Element Types

    For elements whose appearance is determined by external resources or complex internal structures, display: contents behaves differently:

    • Replaced Elements: For elements like images (<img>), which are controlled by external resources, applying display: contents functions exactly like display: none. The entire box and contents are not drawn.

    • Complex Form Elements: For many form elements (such as <select>, <input>, and <textarea>), which are composed of several smaller elements rather than a single "box," display: contents also functions exactly like display: none.

    • Buttons and Links: These elements do not have special behavior. The surrounding box is removed, but the content remains visible. Links still function for navigation, and buttons still attempt to submit a form if used within one.

    4. Utility and Use Cases

    • Semantic Layout Solution: This rule is useful for resolving conflicts between the need for semantic HTML structure (e.g., grouping content within an <article>) and the requirements of modern CSS layout systems, such as CSS Grid Layout.

    • Enabling Direct Sibling Styling: CSS Grid often requires elements to be direct siblings to function correctly. By applying display: contents to wrapping elements (like <article>), the wrapper's children are treated as if they were direct siblings of the grid container, allowing complex layouts (like ensuring matched height sections across multiple cards) while preserving semantic grouping.

    5. Browser Support

    • At the time the source was written, display: contents was only supported in two major browsers.

    • It should currently be treated as a progressive enhancement, and developers should use appropriate fallbacks (e.g., using @supports CSS queries).

  • Marko
    October 30, 2018

    Marko

    Marko, a friendly (and fast!) UI library from eBay that makes building web apps fun.

    Read more
  • Marko
    Marko Marko Marko Marko

    Marko, a friendly (and fast!) UI library from eBay that makes building web apps fun.

    Marko is a declarative, HTML-based language designed to make building web apps fun. Marko is utilized for creating dynamic and reactive user interfaces.

    The principal functionalities and features of Marko are:

    Core Language and Architecture

    • HTML Re-imagined: Marko extends standard HTML, meaning almost any valid HTML is valid Marko, but it enables building modern applications in a declarative way.

    • Familiarity: It is familiar to developers who know HTML, CSS, and JavaScript.

    • Scalability: It is scalable, supporting everything from simple HTML templates to powerful components as needed.

    • Trust/Usage: It is trusted, powering high-traffic, production-grade websites such as eBay.com.

    Performance and Optimization

    • High Performance: Marko is performant, featuring streaming, resumable capabilities, an optimizing compiler, and a tiny runtime.

    • Faster First Paint (Streaming): It streams content to users as soon as it is ready, avoiding the wait for client-side JavaScript bundles or data requests to start rendering. HTML, assets, and images are loaded as quickly as possible, with asynchronous content loading finishing as it completes.

    • Granular by Design: The architecture is designed to be lean by default and fast. It ships only necessary code, skipping hydration and stripping unused code at the sub-template level, offering unrivaled performance on any device or network.

    • Environment Optimization: Marko compiles templates to produce optimized, environment-specific output.

      • It generates Streamed HTML for the server.

      • It generates Reactive DOM for the browser.

      • This results in faster loads and smaller bundles.

    Developer Experience and Tooling

    • Typescript Support: Marko has built-in TypeScript support.

    • Strong Type Inference: It provides strong type inference that works across templates and components.

    • Full Editor Features: Editors receive full language features, including autocompletion, jump-to-definition, syntax highlighting, and clean formatting.

    • Quality Assurance: The platform helps developers build confidently, catch errors early, and write better code, faster.

    • Built-in Tags: It supports built-in HTML tags (like <div>) and core <script> tags, providing access to essential DOM methods like addEventListener, animate, append, appendChild, and focus.

  • 33 JS concepts
    November 13, 2018

    33 JS concepts

    33 concepts every JavaScript developer should know.

    Read more
  • 33 JS concepts
    33 JS concepts

    33 concepts every JavaScript developer should know.

    33 JavaScript Concepts repository is hosted on GitHub by leonardomso (Leonardo Maldonado). This repository serves as a comprehensive open source educational guide for developers focusing on mastering JavaScript fundamentals.

    Here is a summary of its primary features and functionalities, along with the foundational GitHub features that support it:

    I. Core Repository Content (33-js-concepts)

    • Educational Purpose: The repository aims to help developers master their concepts in JavaScript. It is explicitly described as a guide for future studies and was considered by GitHub as one of the top open source projects of 2018.

    • Structured Curriculum: The core feature is a detailed Table of Contents outlining 33 essential JavaScript concepts. These concepts range across various levels of complexity and cover:

      • Execution and Scoping: Call Stack, Message Queue and Event Loop, setTimeout, setInterval and requestAnimationFrame, Function Scope, Block Scope and Lexical Scope.

      • Data and Typing: Primitive Types, Value Types and Reference Types, Implicit, Explicit, Nominal, Structuring and Duck Typing, and the differences between == vs === vs typeof.

      • Object and Inheritance Models: Factories and Classes, this, call, apply and bind, Prototype Inheritance and Prototype Chain, Object.create and Object.assign.

      • Functional Programming: map, reduce, filter, Pure Functions, Side Effects, Closures, High Order Functions, Recursion, Partial Applications, Currying, Compose and Pipe.

      • Asynchronicity: Promises and async/await.

      • Performance and Architecture: Data Structures, Expensive Operation and Big O Notation, Algorithms, and Design Patterns.

    • Rich Resources: Each concept is accompanied by extensive external resources, including References (MDN), numerous explanatory Articles, and educational Videos.

    • Community and Translation: The project encourages community involvement through submitting Pull Requests (PRs) for adding recaps or reviews. It is highly translated, with versions available in languages such as Arabic, Chinese, Brazilian Portuguese, Spanish, Turkish, Russian, French, German, and many others.

    • Technical Details: The repository is public, primarily written in JavaScript (100.0%), and licensed under the MIT License.

    II. GitHub Platform Features (Context)

    As this educational resource lives on GitHub, it is supported by the platform's comprehensive tools:

    • AI Code Creation: GitHub provides tools like GitHub Copilot (to write better code with AI), GitHub Spark (to build and deploy intelligent apps), GitHub Models (to manage and compare prompts), and the MCP Registry (to integrate external tools).

    • Developer Workflows: Features to automate and manage development include Actions (to automate any workflow), Codespaces (for instant dev environments), Issues (to plan and track work), and Code Review (to manage code changes).

    • Application Security: The platform supports Code security (to secure code as you build), Secret protection (to stop leaks), and the add-on GitHub Advanced Security (to find and fix vulnerabilities).

    • Exploration and Learning: Users can search code, repositories, users, issues, and pull requests. The platform also offers resources like a Documentation hub, a Blog, a Marketplace, and GitHub Skills.

    • Enterprise Solutions: For businesses, GitHub offers an Enterprise platform (an AI-powered developer platform), Copilot for Business (enterprise-grade AI features), and Premium Support.

  • PureScript
    February 28, 2019

    PureScript

    PureScript is a strongly-typed functional programming language that compiles to JavaScript

    Read more
  • PureScript
    PureScript PureScript

    PureScript is a strongly-typed functional programming language that compiles to JavaScript

    PureScript, a programming language.

    Core Characteristics and Language Features

    PureScript is characterized as a strongly-typed functional programming language. A primary functionality is that it compiles to JavaScript, which is readable, and allows users to reuse existing JavaScript code easily.

    The language supports the construction of real-world applications using advanced functional techniques and expressive types, such as:

    • Algebraic data types and pattern matching.

    • Row polymorphism and extensible records.

    • Higher kinded types.

    • Type classes with functional dependencies.

    • Higher-rank polymorphism.

    Tooling, Ecosystem, and Functionalities

    PureScript is designed to facilitate development of web applications, web servers, apps, and more.

    Development and Build Tools:

    • It offers excellent tooling and editor support, including features like instant rebuilds.

    • The recommended build tool for PureScript is Spago, which can be installed using NPM.

    • NPM (Node Package Manager) is recommended for managing JavaScript dependencies within a project.

    Installation:

    • PureScript can be installed via precompiled binaries available for OSX, Linux, and Windows.

    • It can also be installed using npm (npm install -g purescript), although this method requires Node version 8 or later.

    Resources and Community:

    • The platform provides an extensive collection of libraries. Searchable documentation for these packages is hosted on the Pursuit package database.

    • Learning resources include the free book PureScript By Example (which contains practical projects for beginners), and a dedicated documentation repository on GitHub.

    • The language benefits from an active community, with places for discussion including the PureScript Discourse instance and the PureScript Discord server.

  • piecejs
    October 21, 2024

    piecejs

    Front-end framework for a versatile and native web components management.

    Read more
  • piecejs
    piecejs

    Front-end framework for a versatile and native web components management.

    piecesjs, is a lightweight JavaScript framework designed for the versatile and native management of web components in the front-end. It is specifically built upon native web components.

    Features:

    Core Architecture and Performance

    • Lightweight Framework: piecesjs is a small framework, noted as being [1.8kb], that avoids the overhead of unnecessary code or restrictive architectures common in larger frameworks.

    • Modular "Pieces": At its core, a "Piece" is a modular component that functions independently, featuring its own encapsulated styles and interactions.

    • Dynamic JS & CSS Import: It automatically imports only the necessary JavaScript and CSS required for the specific page, which optimizes performance.

    • Designed for Interactivity: It is tailored for creative websites that rely heavily on JavaScript logic—specifically sites managing multiple steps, states, and events—offering a streamlined and scalable approach for highly interactive experiences.

    Component Interaction and Communication

    • Seamless Communication: Components are designed to communicate effortlessly with each other.

    • this.call(): This method allows developers to call a function of any component (Piece) from any other component. If a specific pieceId (set using the cid attribute) is not provided, the function will be called on all occurrences of that component type.

    • this.emit() and Custom Events: Developers can emit custom events (by default on the document), which other Pieces can listen to using this.on().

    Event and DOM Management

    • Scoped Event Management: Events can be easily managed within a component's scope using the methods this.on() (for registering event listeners) and this.off() (for removing them, often placed in the unmount() lifecycle method).

    • HTML Event System: piecesjs provides a declarative way to handle events directly within your HTML using data-events-* attributes (e.g., data-events-click). This system automatically scans for these attributes during mount, binds listeners, and cleans them up on unmount.

    • Convenient Access to Scoped HTMLElements (Queries): Developers can quickly access elements within the component scope using this.$() or this.domAttr('slug'). this.domAttr queries elements based on a data-dom slug attribute. The framework also offers methods like this.$All(), this.domAll(), and this.domAttrAll() if a NodeList is preferred, even for single elements.

    Utilities and Lifecycle

    • PiecesManager: This manager provides centralized access to all active pieces currently visible on the page, simplifying component management. It can be accessed globally or via this.piecesManager inside a Piece.

    • Lifecycle Methods: The framework includes specific lifecycle functions for components: premount(), render(), mount(), update(), and unmount(). The update() method is automatically called if an attribute is changed, triggering unmount(), premount(), and mount() in sequence.

    • Efficient Global CSS Management: Provides streamlined handling for organizing global CSS imports.