Report

Hide text CSV Data Package Print

Active projects and challenges as of 10.05.2025 00:00.


Decidim

A digital platform for citizen participation. Free/libre, open and safe technology with all democratic guarantees.


~ PITCH ~

🅰️ℹ️ Design an innovative tool within the Decidim platform that enhances citizen engagement and participation in local decision-making processes. Your goal is to create a user-friendly interface that simplifies access to information, encourages diverse voices, and fosters transparent dialogue among community members. Ensure that the solution embodies principles of accessibility, inclusivity, and security, empowering all citizens to contribute meaningfully to their democracy. Aim for a prototype that highlights the importance of collaboration and fairness in civic engagement, while remaining true to the values of free/libre and open technology. Let’s harness the power of community insight to build a brighter, more participatory future!

~ README ~

:uri-blog: https://decidim.org/blog :uri-browserstack: https://www.browserstack.com :uri-chat: http://chat.decidim.org :uri-contributing: xref:CONTRIBUTING.adoc :uri-demo: https://try.decidim.org :uri-docs-authorizations: https://docs.decidim.org/en/customize/authorizations/ :uri-docs-example-applications: https://docs.decidim.org/en/develop/guide_example_apps/ :uri-docs-getting-started: https://docs.decidim.org/en/install/ :uri-docs: https://docs.decidim.org/ :uri-github-dependents: https://github.com/decidim/decidim/network/dependents?type=application :uri-metadecidim: https://meta.decidim.org :uri-modules: https://decidim.org/modules :uri-modules-auth: https://decidim.org/modules/#auth :uri-omniauth: https://github.com/omniauth/omniauth/wiki/List-of-Strategies :uri-opencollective-members: https://opencollective.com/decidim/contribute/member-39953 :uri-opencollective-partners: https://opencollective.com/decidim/contribute/partner-33556 :uri-opencollective: https://opencollective.com/decidim :uri-producing-oss-license: http://producingoss.com/en/governments-and-open-source.html#starting-open-for-govs :uri-propose-new-features: https://meta.decidim.org/processes/roadmap :uri-releases: https://github.com/decidim/decidim/releases :uri-roadmap: https://github.com/orgs/decidim/projects/22/views/1 :uri-security: https://github.com/decidim/decidim/blob/develop/SECURITY.md :uri-social-contract: http://www.decidim.org/contract/ :uri-website: https://decidim.org :uri-yard-docs: http://rubydoc.info/github/decidim/decidim/develop

image:https://img.shields.io/gem/v/decidim.svg[Gem,link=https://rubygems.org/gems/decidim] image:https://img.shields.io/gem/dt/decidim.svg[Gem,link=https://rubygems.org/gems/decidim] image:https://img.shields.io/github/contributors/decidim/decidim.svg[GitHub contributors,link=https://github.com/decidim/decidim/graphs/contributors] image:https://img.shields.io/matrix/decidimdevs:matrix.org[Matrix,link=https://matrix.to/#/#decidimdevs:matrix.org] image:https://codecov.io/gh/decidim/decidim/branch/develop/graph/badge.svg[codecov,link=https://codecov.io/gh/decidim/decidim] image:https://api.codeclimate.com/v1/badges/ad8fa445086e491486b6/maintainability[Maintainability,link=https://codeclimate.com/github/decidim/decidim/maintainability] image:https://d322cqt584bo4o.cloudfront.net/decidim/localized.svg[Crowdin,link=https://crowdin.com/project/decidim] image:https://opencollective.com/decidim/tiers/badge.svg[https://opencollective.com/decidim] image:http://img.shields.io/badge/yard-docs-blue.svg[Yard Docs,link=http://rubydoc.info/github/decidim/decidim/develop]

++++

The participatory democracy framework

Free Open-Source participatory democracy, citizen participation and open government for cities and organizations.
Explore the docs »

Join our Matrix.org chat rooms.

Features · Roadmap · Report Bug · Propose New Features · Read Blog

++++

= 💡 What is Decidim?

{uri-website}[Decidim] is a participatory democracy framework, written in Ruby on Rails, originally developed for the Barcelona City government online and offline participation website. Installing these libraries will provide you a generator and gems to help you develop web applications like the ones found on <<example-applications,example applications>> or like {uri-demo}[our demo application].

All members of the Decidim community agree with {uri-social-contract}[Decidim Social Contract or Code of Democratic Guarantees].

'''

= Table of Contents

  • <<getting-started,🚀 Getting started>>
  • <<contribute,🙌 Contribute>>
  • <<modules,🧩 Modules>> ** <<identity-verifications-and-authorizations,🪪 Identity verifications and authorizations>> ** <<authentication-options,🚪 Authentication options>>
  • <<license,📘 License>>
  • <<example-applications,🔎 Example applications>>
  • <<security,🔒 Security>>
  • <<financial-contributions,🫶 Financial contributions>> ** <<members,🧑 Members>> ** <<partners,💻 Partners>>
  • <<learn-more,📖 Learn More>>
  • <<credits,🎩 Credits>>

'''

== 🚀 Getting started

TLDR: install gem, generate a Ruby on Rails app, enjoy.

[source,console]

gem install decidim decidim decidim_application

We have set up a guide on how to install, set up and upgrade Decidim. See the {uri-docs-getting-started}[Getting started guide].

== 🙌 Contribute

Anyone can participate in {uri-metadecidim}[Metadecidim], our own distance of Decidim for improving Decidim. The community is formed by people with different profiles and backgrounds.

How can you contribute? There are many ways to do it, some more specific to the software -improving documentation or translations, reporting bugs or proposing improvements-, but you can also participate in discussions about the governance of the community (find out how we organize ourselves).

Having a lively community is crucial to this project, so we encourage you to find out what is the best way for you to contribute to the commons! 🌱

Read more about contributions in our {uri-contributing}[contribution guidelines].

== 🧩 Modules

If you need to have some features that we do not have yet, we recommend that you make a module. This is a Ruby on Rails engine with some APIs specific to Decidim (for registering with the menus, integration with spaces like Participatory Processes or Assemblies, with /admin or /api, etc).

As a base you can use these modules, although check first that the version is compatible with your current Decidim version. Also, you should know that until v1.0.0 we are under development, and these internal APIs can change.

We recommend that you extensively test your module.

See {uri-modules}[Modules page on Decidim.org].

=== 🪪 Identity verifications and authorizations

One specific thing regarding these kind of applications is how you manage the permissions that the participants will have in the platform (aka the authorization or verification logic). This tries to solve the problem of how to verify that the user is who they say they are and that they have the right to participate in this city or organization. Read more about {uri-docs-authorizations}[Authorizations] in our documentation.

=== 🚪 Authentication options

You can easily add any authentication provider to Decidim that is provided by {uri-omniauth}[OmniAuth]. Also you have a {uri-modules-auth}[list of modules related to authorization] already developed by the community.

== 📘 License

If you plan to put your application in production, you will need to publish it using the same license: GPL Affero 3.

We recommend doing that on GitHub (or any other code hosting platform) before publishing.

You can read more on "{uri-producing-oss-license}[Being Open Source From Day One is Especially Important for Government Projects]".

If you have any trouble you can contact us on {uri-chat}[our Matrix.org chat room for developers].

== 🔎 Example applications

Since Decidim is a ruby gem, you can check out the {uri-github-dependents}[dependent repositories] to see how many applications are on the wild or tests that other developers have made. You can see a highlight of {uri-docs-example-applications}[example applications] in our documentation.

== 🔒 Security

Security is very important to us. If you have any issue regarding security, please disclose the information responsibly by sending an email to security [at] decidim [dot] org and not by creating a github/metadecidim issue. We appreciate your effort to make Decidim more secure. See {uri-security}[full security policy].

== 🫶 Financial contributions

Decidim helps citizens, organizations and public institutions to democratically self-organize at every scale. Thanks to Decidim, any organization is able to configure spaces for participation (initiatives, assemblies, or processes) and enrich them through the multiple available components (meetings, surveys, proposals, participatory budgets, accountability for results, comments, and many other).

You can contribute financially to the sustainability of this project through {uri-opencollective}[OpenCollective].

The funds will enable the maintainers to:

  • review community contributions
  • triage issues
  • fix bugs related to performance
  • improve the design of the platform
  • write better documentation
  • improve performance of the platform security

=== 🧑 Members

Members have the right to participate in all the participation spaces of the {uri-metadecidim}[Metadecidim] platform with voice and vote, exercise their vote in strategic and internal decisions, elect or be elected in representative bodies, request and obtain explanations about the management of the positions of the Association, receive information about the activities and make common uses that are established. Read more about becoming a {uri-opencollective-members}[Decidim association member].

image::https://opencollective.com/decidim/tiers/member.svg?avatarHeight=36&width=600[Members]

=== 💻 Partners

Any organization offering services on Decidim can contribute back to the commons by becoming a Partner. Each Partner commits to include a clause in each new service contract around Decidim, explicitly stating that a small percentage is allocated to the maintenance of the source code. For a company, the percentage is 3%, and for a nonprofit organization, it is 1.5%. Read more about becoming a {uri-opencollective-partners}[Decidim association partner].

image::https://opencollective.com/decidim/tiers/partner.svg?avatarHeight=36&width=600[Partners]

== 📖 Learn More

|=== | Decidim Resource | Description

| 🚀 {uri-releases}[Our latest releases] | New features and bug fixes.

| 🧩 {uri-modules}[Modules] | Find out new ways of enhancing Decidim.

| 🗳 {uri-propose-new-features}[Propose new Features] | Is there any missing feature? Propose a new one!

| 📓 {uri-docs}[Docs] | Full documentation for creating and customizing your own Decidim application.

| 📒 {uri-yard-docs}[API Reference] | Detailed reference on Decidim's API.

| 🔎 {uri-docs-example-applications}[Examples] | See some ways where Decidim is used, with code examples.

| 📬 {uri-blog}[Blog] | All the latest news and releases from Decidim.

| 💬 {uri-chat}[Join Matrix.org] | Need help with your specific use case? Say hi on Matrix!

| 🗺 {uri-roadmap}[Roadmap] | See where Decidim is working to build new features.

| 🙌 {uri-contributing}[Contribute] | How to contribute to the Decidim project and code base.

|===

== 🎩 Credits

  • This project is tested with {uri-browserstack}[BrowserStack].

#dribdat

EveryHack

An open source app to help organize short sprints and hackathons, used to document open challenges and prototypes, promote community best practices and governance principles (Open Definition, Open Licenses, School of Data Pipeline, Hack Code of Conduct, etc.). Based on Frictionless Data and Schema.org standards, Dribdat aids in data wrangling, automates event workflows, and supports a diversity of channels and output formats for social media sharing, digital signage, and summary reports.


~ PITCH ~

https://youtu.be/V7Sxo0IXe8g?t=11856

🅰️ℹ️ Imagine creating an open-source application that brings the excitement of short sprints and hackathons to life while fostering a sense of community and collaboration. Your mission is to design and prototype an app that simplifies the organization of events, documents open challenges and prototypes, and promotes best practices in governance through adherence to principles like the Open Definition and Open Licenses. By leveraging the Frictionless Data initiative and Schema.org standards, your tool should enable seamless data wrangling, automate event workflows, and facilitate diverse output formats for engaging social media sharing, digital signage, and comprehensive summary reports. Prioritize inclusivity and fairness in every aspect of your design, ensuring that the platform serves as a welcoming space for all participants to innovate and collaborate effectively.

In my presentation I also mentioned:

~ README ~

Github Actions build status codecov status FOSSA status

Dribdat

An open source hackathon management application that playfully assists your team in crowdsourcing technical designs.

🚲 See Tour de Hack for examples, and User handbook for screenshots. 🏔️ There are mirrors on Codeberg and GitHub. 🩵 Support us on OpenCollective

We aim to include people of all backgrounds in using + developing this tool - no matter your age, gender, race, ability, or sexual identity 🏳️‍🌈 Please read our Code of Conduct if you have questions.

Purpose

Created in light of the Hacker ethic, the Zen of Dribdat is (in a nutshell):

  • Commit sustainably: aggregate results in open, web-friendly data formats for search and archiving.
  • Go live and let live: efficiently deploy designs, dev envs, docs accessible to your entire team.
  • Co-create in safe spaces: with content and tools promoting safer conduct and increased privacy.

Designed to bootstrap your awesome hackathon, Dribdat's toolset can be used as a versatile toolbox for civic tech sprints. To get started, install the software.

Visit the Hackfinder to find events connected to current research, and join our Hack:Org:X meetings to say 'hi' to the maintainers and fellow hackathon organizers.

For more background and references, see the 📖 User Handbook. If you need help or advice in setting up your site, or would like to contribute to the project: please get in touch via 🗣️ Discussions.

Quickstart

The Dribdat project can be deployed to any server capable of serving Python applications, and is set up for fast deployment using Ansible or Docker 🏀 The first user that registers becomes an admin, so don't delay when you make your play on D}}BD{T

If you would like to run this application on any other cloud or local machine, there are instructions in the Deployment guide. Information on contributing and extending the code can be found in the Contributors guide, which includes API documentation, and other details.

See also backboard: a responsive, modern alternative frontend, and our dridbot chat client. Both demonstrate reuse of the dribdat API. If you need support with your deployment, please reach out through Discussions. Pull Requests and Issues welcome!

Development Status: 🍌 Perpetual beta

Credits

This application was based on cookiecutter-flask by Steven Loria, a more modern version of which is cookiecutter-flask-restful. Cookiecutter could also be a good bootstrap for your own hackathon projects!

♡ The Open Data, Open Networking and Open Source communities in 🇨🇭 Switzerland gave this project initial form and direction through a hundred events. ♥-felt thanks to our Contributors, and additionally: F. Wieser and M.-C. Gasser at Swisscom for support at an early stage of this project, to Alexandre Cotting, Anthony Ritz, Chris Mutel, Fabien Schwob, Gonzalo Casas, Iliya Tikhonenko, Janik von Rotz, Jonathan Schnyder, Jonathan Sobel, Philip Shemella, Thomas Amberg, Yusuf Khasbulatov .. and all participants and organizers sending in bugs and requests! You are all awesome hackers

License

This project is open source under the MIT License.

The Contributor Covenant Code of Conduct applies to interactions with the maintainers and support community of the project.

Due to the use of the boto3 library for optional S3 upload support, there is a dependency on OpenSSL via awscrt. If you use these features, please note that the product includes cryptographic software written by Eric Young ([email protected]) and Tim Hudson ([email protected]).


FörderFunke

We inform citizens proactively about state benefits and other offers of the public sector they are eligible for. Your profile becomes the search filter in information spaces. Be found by matching offers instead of: having to know about them, having to search for them and having to check your eligibility.


~ PITCH ~

🅰️ℹ️ Imagine a world where public benefits and services find you instead of the other way around. Your unique profile serves as a beacon that connects you with relevant state offers tailored to your needs—no more endless searching or uncertainty about eligibility. Create an intuitive platform that actively informs citizens, allowing them to discover and access vital resources effortlessly. Design an engaging user experience that empowers everyone to unlock their rights and benefits, fostering a more informed and equitable society. Let's build a solution that transforms information accessibility and enhances community well-being through proactive engagement!

~ README ~

FörderFunke app

Live at foerderfunke.org.

Uses the matching-engine as dependency and loads Turtle files from the requirement-profiles repository at runtime.

Local development

npm install
npm start

  • Created: 05.03.2025
  • Updated: 05.03.2025
  • Progress: 30% (Prototype)
  • Permalink

Just another test



Make PDFs semantic (for Climate)

We are going to figure out better ways to access this very well known open standard with deep roots in the publishing industry, and open it up to new uses by the open data community, in particular through the application of Linked Data.


~ PITCH ~

🅰️ℹ️ In today's digital landscape, PDFs remain a staple for document sharing, yet their inherent lack of semantic structure limits data accessibility and interoperability. As we delve into the possibilities of enhancing PDFs with semantic meaning, our goal is to uncover innovative methods that leverage Linked Data principles to enrich the PDF format. By doing so, we aim to foster new applications within the open data community, enabling richer insights and collaborations.

Join us in reimagining how PDFs can be transformed into dynamic, data-rich documents that promote fairness and enhance information sharing across diverse platforms. Together, let's create solutions that bridge the gap between traditional publishing and modern data use, empowering users and inspiring new possibilities.

~ README ~

hack-the-shifts

#semanticClimate is a part of UN Library's one-day hackathon. This Repository contains all the resources we use/create.


Open Data Editor

The Open Data Editor (ODE) is a no-code application to explore, validate and publish data in a simple way. Forever free and open source project powered by the Frictionless Framework.


~ PITCH ~
~ README ~

Build Codebase Support

ODE-landscape-full-rgb@3x

Open Data Editor (beta)

Welcome to our Readme!

The Open Data Editor (ODE) is a no-code application to explore, validate and publish data in a simple way. Forever free and open source project powered by the Frictionless Framework.

📩 Send us feedback/Report a problem (email) 🪲 Create an issue on GitHub 🤔 Suggest a new feature

Useful links

🔵 Open Data Editor Concept Note

🔵 Open Data Editor User Guide and Project Documentation

🔵 Frictionless Framework

🔵 Frictionless Data

🔵 Contributing Guide

🔵 Technical Architecture

🔵 For all contributions: Code of conduct

How to download the ODE

📍Note: the ODE is currently available for download and testing in beta. We are working on a stable version. Updates will be announced throughout the year.

Go to RELEASES

  • For Windows:Download the most recent EXE file.
  • For MacOS:Download the most recent DMG file.
  • For Linux:Download the most recent AppImage or DEB file.

Open Data Editor (beta 1.1) has been released on Sept., 2024.


Querido Diário (Dear Diary)

The tool seeks to facilitate the monitoring, analysis and correlation of the information published in the diaries, fostering the development of technology for civic purposes in Brazil and promoting social control to find solutions to the challenges of the public context.


~ PITCH ~

🅰️ℹ️ In the context of "Querido Diário (Dear Diary)", your task is to create an innovative tool that enables citizens to record and share their experiences and observations about public services and social issues in Brazil. This tool should harness the power of data to facilitate the monitoring, analysis, and correlation of diary entries, empowering communities to identify trends and advocate for change.

Aim to design a user-friendly platform that encourages honest reflections while ensuring data privacy and security. Your solution should promote civic engagement, enhance social control, and provide actionable insights to address the pressing challenges faced in the public sphere. Collaborate to develop a prototype that not only resonates with users but also fosters a spirit of fairness and inclusiveness in civic discourse. Let’s come together to create a brighter future for our communities!

~ README ~

Português (BR) | English (US)

Querido Diário

Frontend (interface web)

Dentro do ecossistema do Querido Diário, este repositório é o responsável pelo site do Querido Diário.

Conheça mais sobre as tecnologias e a história do projeto.

Sumário

Como contribuir

catarse

Agradecemos por considerar contribuir com o Querido Diário! :tada:

Você encontra como fazê-lo no CONTRIBUTING.md!

Além disso, consulte a documentação do Querido Diário para te ajudar.

Ambiente de desenvolvimento

O projeto utiliza Node.js e Yarn. Utilizamos também o nvm, um gerenciador de versão de node.js. Para saber a versão do node.js, a lista de dependências e suas versões, veja o arquivo package.json.

Por meio de um terminal aberto no diretório raíz do repositório, use a sequência de comandos a seguir para instalar todas essas ferramentas em sistema operacional Linux:

nvm install v16.2.0
npm install --global yarn
yarn

Para mais detalhes ou informações sobre a configuração em outros sistemas operacionais veja em "como configurar o ambiente de desenvolvimento".

Como executar

  1. Com o terminal aberto no diretório raíz do repositório, o projeto pode ser servido localmente com o comando:
yarn ng serve
  1. Durante a execução, um log aparecerá no terminal. O trecho final, como este a seguir, informa em qual porta a visualização do site está hospedada. Basta copiar o endereço http e abrir no navegador.
** Angular Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/ **

✔ Compiled successfully.
  1. Pronto! Agora você já pode simular as alterações, vendo como as modificações feitas no código refletem no site, antes de enviar sua contribuição!

Suporte

Discord Invite

Ingresse em nosso canal de comunidade para trocas sobre os projetos, dúvidas, pedidos de ajuda com contribuição e conversar sobre inovação cívica em geral.

Agradecimentos

A aplicação foi inicialmente desenvolvida junto às pessoas do estúdio de software Jurema.

Este projeto é mantido pela Open Knowledge Brasil e possível graças às comunidades técnicas, às Embaixadoras de Inovação Cívica, às pessoas voluntárias e doadoras financeiras, além de universidades parceiras, empresas apoiadoras e financiadoras.

Conheça quem apoia o Querido Diário.

Open Knowledge Brasil

Twitter Follow Instagram Follow LinkedIn Follow

A Open Knowledge Brasil é uma organização da sociedade civil sem fins lucrativos, cuja missão é utilizar e desenvolver ferramentas cívicas, projetos, análises de políticas públicas, jornalismo de dados para promover o conhecimento livre nos diversos campos da sociedade.

Todo o trabalho produzido pela OKBR está disponível livremente.

Licença

Código licenciado sob a Licença MIT.


Simpler Grants.gov

This presentation will review the current features in the codebase, efforts to involve a wider community of contributors through an open source developer evangelist and participatory advisory council, and running the project in an open and transparent fashion.


~ PITCH ~

🅰️ℹ️ How might we enhance the Grants.gov platform to be more user-friendly and accessible, empowering a broader range of users to navigate the grants process effectively? This initiative will leverage existing features and engage a diverse community of contributors through an open-source approach. By fostering collaboration and transparency, we aim to streamline grant applications, eliminate barriers, and create a supportive ecosystem that welcomes input from various stakeholders. Join us in reimagining the future of grant funding to be simpler and more inclusive for all.

~ README ~

Simpler.Grants.gov

A modernization effort for Grants.gov

About the Project

We want Grants.gov to be an extremely simple, accessible, and easy-to-use tool for posting, finding, sharing, and applying for federal financial assistance. Our mission is to increase access to grants and improve the grants experience for everyone. We’re improving the way applicants search for and discover funding opportunities, making it easier to find and apply. For federal grantmaking agencies, we’re making it easier for their communities to find the funding they need.

Go to Simpler.Grants.gov to learn about our transparent process and what we’re doing now, or explore our existing user research and the findings that are guiding our work.

See goals.md for more information about the vision and goals for the project.

Core Team

The core team on the grants.gov project is a small group of content strategists, designers, developers, and product managers working for and with the Department of Health and Human Services, and other federal agencies, and community volunteers.

An up-to-date list of core team members can be found in MAINTAINERS.md. At this time, the project is still building the core team and defining roles and responsibilities. We are eagerly seeking individuals who would like to join the community and help us define and fill these roles.

Repository Structure

  • ./.github contains Github specific settings files and testing, linting, and CI/CD workflows
  • ./api contains an API built in Python using the Flask library
  • ./bin contains scripts for managing infrastructure
  • ./documentation contains project guides, documentation, and decision records
  • ./frontend contains a web application built using Next.js
  • ./infra contains Terraform modules and configuration for managing the AWS infrastructure

Development

API

Documentation for the API is linked to from the API README.md. For installation instructions, see the development documentation.

Front-end

Documentation and development instructions for the front-end are provided in the Front-end README.md.

Contributing

Thank you for considering contributing to an Open Source project of the US Government! For more information about our contribution guidelines, see CONTRIBUTING.md to learn more and join our community see our wiki.

Security

For more information about our Security, Vulnerability, and Responsible Disclosure Policies, see SECURITY.md.

Authors and Maintainers

For more information about our Authors and maintainers, see MAINTAINERS.md.

A full list of contributors can be found on GitHub.

Public domain

This project is licensed within in the public domain within the United States, and copyright and related rights in the work worldwide are waived through the CC0 1.0 Universal public domain dedication.

All contributions to this project will be released under the CC0 dedication. By submitting a pull request or issue, you are agreeing to comply with this waiver of copyright interest.


Zettlr

Zettlr is a Markdown editor made specifically for academics and professional writers, created in 2017. It is committed to Open Science and Open Access and fully FOSS. It works on plain files on the computer, is 100% telemetry-free, cross-platform, fully supports the open Citation Style Language and Zotero integration, and uses Pandoc to import and export from and to a wide variety of document formats. Furthermore, it also has a project feature for entire papers and book projects.


~ PITCH ~

🅰️ℹ️ Imagine a world where academic writing is not only simplified but also enhanced through collaboration and accessibility. Your mission is to innovate upon Zettlr's existing robust features by creating a plugin or tool that improves the writing process for researchers.

Focus on developing a new feature that facilitates collaboration among writers, integrating real-time feedback and version control systems, while maintaining the integrity of Markdown documentation. Consider how you can leverage Zettlr’s capability for Zotero integration and its support for diverse citation styles to streamline peer review and editing processes.

Your solution should prioritize transparency and accessibility, fostering an inclusive environment for all academics and writers, regardless of their technical skills. Emphasize user-friendliness and seamless integration with existing workflows while ensuring that the final product is compatible with Zettlr’s core principles of being FOSS and telemetry-free.

Let’s empower scholars to produce impactful work by enhancing their writing experience with creativity, fairness, and collaboration!


Hi! I have prepared this page[source] to collate resources, links, and additional reading that supports my presentation during the The Tech We Want Summit in October 2024.

If you would like to stay in touch, you can do so on Bluesky or Mastodon. If you would like to discuss Zettlr further or have any additional questions, the best way is to join the Zettlr discord and ask all your questions directly there.

Zettlr-related links

Further reading

~ README ~

Zettlr
Zettlr [ˈset·lər]

Your One-Stop Publication Workbench.

DOI License: GNU GPL v3 GitHub tag (latest by date) GitHub All Releases Unit Tests / Lint Build

Homepage | Download | Documentation | Mastodon | Discord | Contributing | Support Us

screenshot

Zettlr brings simplicity back to your texts. Open-minded writing that adapts to your style. Fast information retrieval that finds what matters to you. Versatile exporting that enables you to adapt to whatever publication pipeline your employer or school uses.

Focus on what matters to you.

Publish, not perish.

Learn more on our website.

Features

  • Your Notes are your notes: Zettlr is privacy-first
  • Citations made easy: Tight and ever-growing integration with your favourite reference manager (Zotero, JabRef, and many others)
  • Available in over a dozen languages
  • Draft your publications in a professional environment, with LaTeX and Word template support
  • Simple and beautiful exports with Pandoc, LaTeX, and Textbundle
  • Snippets allow you to automate insertion of boilerplate code
  • Themes, dark modes, and full flexibility with custom CSS
  • Code highlighting for many languages
  • Support for state of the art knowledge management techniques (Zettelkasten)
  • A powerful full text search that helps you find anything, anywhere

… and the best is: Zettlr is Free and Open Source Software (FOSS)!

Installation

To install Zettlr, just download the latest release for your operating system. Currently supported are macOS, Windows, and most Linux distributions (via Debian- and Fedora-packages as well as AppImages).

On our website and here on GitHub, we provide a set of installers for the most common use-cases. We provide both 64-bit installers as well as installers for ARM systems (called "Apple Silicon" in the macOS ecosystem). 32-bit is not supported. We offer the following binaries directly:

  • Windows (x64)
  • macOS (Intel and Apple Silicon)
  • Debian and Fedora (x64 and ARM)
  • AppImage (x64 and ARM)

Thanks to our community, we can also offer you a variety of other installation opportunities:

All other platforms that Electron supports are supported as well, but you will need to build the app yourself for this to work.

Please also consider becoming a patron or making a one-time donation!

Getting Started

After you have installed Zettlr, head over to our documentation to get to know Zettlr. Refer to the Quick Start Guide, if you prefer to use software heads-on.

The central window of Zettlr using the dark theme

Contributing

As an Open Source application, Zettlr always welcomes contributions from the community. You do not need to know how to write code to help! A full overview over all the areas where you can help can be found in our contributing guide. Here, we introduce you to the two biggest areas where we welcome help: translations and contributing code.

Translating

The development team maintains the English and German translations, but lacks adequate knowledge of other languages. All the other available translations have been created by our community.

Zettlr's translations utilize the gettext system. This means that the translations are kept in PO-files within the static/lang directory.

To update a translation, simply download the corresponding language file and edit it. You can edit PO-files with a simple text editor, but if you prefer a more comfortable graphical editor, there are many out there. One good option is the Open Source editor POedit.

As soon as you are happy with your changes, open a Pull Request here that updates the corresponding file. GitHub has created a great guide on how to open Pull Requests.

Contributing Code

Zettlr is an Electron-based app, so to start developing, you'll need to have the following installed on your computer:

  1. NodeJS. Make sure it's at least Node 20 (lts/iron). To test what version you have, run node -v.
  2. Yarn. This is the package manager for the project, as we do not commit package-lock.json-files and many commands require yarn. You can install this globally using npm install -g yarn or Homebrew, if you are on macOS.
  3. On Windows, we recommend to install the Windows Subsystem for Linux (WSL), which will make many of the next steps easier.
  4. A few command-line utilities that various scripts require for running the development builds:
    • cURL (required by the Pandoc download script)
    • unzip (required by the Pandoc download script)
    • jq (required by the i18n script)
  5. An appropriate build toolchain for your operating system, since Zettlr requires a few native C++-modules that must be compiled before running the app:
    • macOS: On macOS, installing the XCode command-line tools via xcode-select --install suffices
    • Windows: On Windows, you'll need the free Visual Studio development tools that include the required tools
    • Linux: On Linux, there are a variety of compatible toolchains available, sometimes they are already preinstalled. Refer to your distribution's manual for more information.

Then, simply clone the repository and install the dependencies on your local computer:

$ git clone https://github.com/Zettlr/Zettlr.git
$ cd Zettlr
$ yarn install --immutable

The --immutable flag ensures that yarn will stick to the versions as listed in the yarn.lock and not attempt to update them.

During development, hot module reloading (HMR) is active so that you can edit the renderer's code easily and hit F5 after the changes have been compiled by electron-forge. You can keep the developer tools open to see when HMR has finished loading your changes.

What Should I Know To Contribute Code?

In order to provide code, you should have basic familiarity with the following topics and/or manuals (ordered by descending importance):

[!TIP] See the "Directory Structure" section below to get an idea of how Zettlr specifically works.

Development Commands

This section lists all available commands that you can use during application development. These are defined within the package.json and can be run from the command line by prefixing them with yarn. Run them from within the base directory of the repository.

start

Use this command to carefree test any changes you make to the application. This command will start the application, but will provide a custom configuration and a custom directory. Thus, it will not touch any files that a regular Zettlr installation will use.

The first time you start this command, pass the --clean-flag to copy a bunch of test-files to your ./resources-directory, create a test-config.yml in your project root, and start the application with this clean configuration. Then, you can adapt the test-config.yml to your liking (so that certain settings which you would otherwise always set will be pre-set without you having to open the preferences).

Whenever you want to reset the test directory to its initial state (or you removed the directory, or cloned the whole project anew), pass the flag --clean to the command in order to create or reset the directory. This is also necessary if you changed something in test-config.yml.

If you want to prevent a config-file from being created (e.g., to simulate the first start experience), you can pass the flag --no-config to this command.

You can pass additional command-line switches such as --clear-cache to this command as well. They will be passed to the child process.

[!WARNING] Attention: Before first running the command, you must run it with the --clean-flag to create the directory in the first place!

Additionally, have a look at our full development documentation.

package

Packages the application, but not bundle it into an installer. Without any suffix, this command will package the application for your current platform and architecture. To create specific packages (may require running on the corresponding platform), the following suffixes are available:

  • package:mac-x64 (Intel-based Macs)
  • package:mac-arm (Apple Silicon-based Macs)
  • package:win-x64 (Intel-based Windows)
  • package:linux-x64 (Intel-based Linux)
  • package:linux-arm (ARM-based Linux)

The resulting application packages are stored in ./out.

[!IMPORTANT] This command will skip typechecking to speed up builds, so we recommend running lint before packaging to ensure that there are no errors.

release:{platform-arch}

Packages the application and then bundles it into an installer for the corresponding platform and architecture. To create such a bundle (may require running on the corresponding platform), one of the following values for {platform-arch} is required:

  • release:mac-x64 (Intel-based Macs)
  • release:mac-arm (Apple Silicon-based Macs)
  • release:win-x64 (Intel-based Windows)
  • release:linux-x64 (Intel-based Linux)
  • release:linux-arm (ARM-based Linux)

The resulting setup bundles are stored in ./release.

[!NOTE] While you can package directly for your platform without any suffix, you need to specify the platform and architecture when creating a release bundle, since electron-builder would otherwise include the development-dependencies in the app.asar, resulting in a bloated application.

csl:refresh

This downloads the Citation Style Language (CSL) files with which the application is shipped, and places them in the static/csl-locales- and static/csl-styles-directories respectively.

[!NOTE] This command is intended for an automated workflow that runs from time to time on the repository to perform this action. Do not commit updated files to the repository. Instead, the updated files will be downloaded whenever you git fetch.

lint

Runs ESLint. Apps such as Visual Studio Code will automatically run ESLint in the background on your open files. This command runs them across the entire code base. Make sure to run this command prior to submitting a Pull Request.

[!NOTE] This command will run automatically on each Pull Request to check your code for inconsistencies.

shortcut:install

Creates a .desktop-file into your applications which enables you to quickly start an app that you have compiled from source. This requires Linux. To use new changes, simple sync the repository, run package again, and you're good to go.

[!WARNING] We provide this command as a convenience. Unless you know what you are doing, you should not run code directly compiled from the HEAD commit of the develop branch. This command can be useful, however, in a few instances where you know what may go wrong and can take appropriate precautions.

shortcut:uninstall

Removes the .desktop-file created by shortcut:install.

[!NOTE] You don't have to uninstall and reinstall the shortcut whenever you compile the binary anew. Just make sure that Zettlr is closed before you recompile it. You should only have to reinstall the shortcut if the template (in scripts/assets/zettlr-dev.desktop) has changed.

test

This runs the unit tests in the directory ./test. Make sure to run this command prior to submitting a Pull Request, as this will be run every time you commit to the PR, and this way you can make sure that your changes don't break any tests, making the whole PR-process easier.

test-gui

See start.

[!IMPORTANT] This command is deprecated and only an alias for start. Use start instead.

Directory Structure

Zettlr is a mature app that has amassed hundreds of directories over the course of its development. Since it is hard to contribute to an application without any guidance, we have compiled a short description of the directories with how they interrelate.

.
├── out                         # Contains unpackaged binaries after running any `package` command
├── release                     # Contains distributables after running any `release` command
├── resources                   # General resource files
│   ├── NSIS                    # Windows installer bitmaps
│   ├── icons                   # Various icon formats
│   ├── screenshots             # Contains the main screenshots
├── scripts                     # Scripts used during the build process and CI pipeline 
│   ├── assets                  # Assets for the script files
│   └── test-gui                # A full file tree used with the `test-gui` command
├── source                      # This is the actual source filetree
│   ├── app                     # Main process components
│   │   ├── service-providers   # Service providers that handle most of the business logic
│   │   └── util                # Utility functions for the main process
│   ├── common                  # Shared files between various renderer processes
│   │   ├── img                 # Images used in various places
│   │   ├── modules             # Shared modules
│   │   │   ├── markdown-editor # Main Markdown editor
│   │   │   ├── markdown-utils  # MD Utilities such as md2html converter
│   │   │   ├── preload         # Electron preload files
│   │   │   └── window-register # Run by every renderer during setup
│   │   ├── util                # General utility functions
│   │   └── vue                 # Shared Vue components
│   ├── pinia                   # Renderer state management
│   ├── types                   # Types-only directory; deprecated
│   ├── win-about               # About dialog window
│   ├── win-assets              # Assets Manager
│   ├── win-error               # Error window
│   ├── win-log-viewer          # Log Viewer
│   ├── win-main                # Main window
│   ├── win-paste-image         # Paste-Image-dialog
│   ├── win-preferences         # Preferences window
│   ├── win-print               # Print preview
│   ├── win-project-properties  # Project properties
│   ├── win-splash-screen       # The splash screen
│   ├── win-stats               # Statistics window
│   ├── win-tag-manager         # Tag manager
│   └── win-update              # Updater
├── static                      # Contains static resources
│   ├── csl-locales             # CSL locale files
│   ├── csl-styles              # CSL styles
│   ├── defaults                # Default defaults/Pandoc profiles
│   ├── dict                    # Dictionaries that ship with the app
│   ├── fonts                   # Fonts that ship with the app
│   ├── lang                    # Language and i18n-related files
│   ├── lua-filter              # Default Lua-filters
│   └── tutorial                # Tutorial files in various languages
└── test                        # Unit tests

On the Distinction between Modules and Service Providers

You'll notice that Zettlr contains both "modules" and "service providers". The difference between the two is simple: Service providers run in the main process and are completely autonomous while providing functionality to the app as a whole. Modules, on the other hand, provide functionality that must be triggered by user actions (e.g. the exporter and the importer).

The Application Lifecycle

Whenever you run Zettlr, the following steps will be executed:

  1. Execute source/main.ts
  2. Environment check (source/app/lifecycle.ts::bootApplication)
  3. Boot service providers (source/app/lifecycle.ts::bootApplication)
  4. Boot main application (source/main/zettlr.ts)
  5. Load the file tree and the documents
  6. Show the main window

And when you shut down the app, the following steps will run:

  1. Close all windows except the main window
  2. Attempt to close the main window
  3. Shutdown the main application (source/main/zettlr.ts::shutdown)
  4. Shutdown the service providers (source/app/lifecycle.ts::shutdownApplication)
  5. Exit the application

During development of the app (yarn start and yarn test-gui), the following steps will run:

  1. Electron forge will compile the code for the main process and each renderer process separately (since these are separate processes), using TypeScript and webpack to compile and transpile.
  2. Electron forge will put that code into the directory .webpack, replacing the constants you can find in the "create"-methods of the window manager with the appropriate entry points.
  3. Electron forge will start a few development servers to provide hot module reloading (HMR) and then actually start the application.

Whenever the app is built, the following steps will run:

  1. Electron forge will perform steps 1 and 2 above, but instead of running the app, it will package the resulting code into a functional app package.
  2. Electron builder will then take these pre-built packages and wrap them in a platform-specific installer (DMG-files, Windows installer, or Linux packages).

Electron forge will put the packaged applications into the directory ./out while Electron builder will put the installers into the directory ./release.

Command-Line Switches

The Zettlr binary features a few command line switches that you can make use of for different purposes.

--launch-minimized

This CLI flag will instruct Zettlr not to show the main window on start. This is useful to create autostart entries. In that case, launching Zettlr with this flag at system boot will make sure that you will only see its icon in the tray.

Since this implies the need to have the app running in the tray bar or notification area when starting the app like this, it will automatically set the corresponding setting system.leaveAppRunning to true.

[!NOTE] This flag will not have any effect on Linux systems which do not support displaying an icon in a tray bar or notification area.

--clear-cache

This will direct the File System Abstraction Layer to fully clear its cache on boot. This can be used to mitigate issues regarding changes in the code base. To ensure compatibility with any changes to the information stored in the cache, the cache is also automatically cleared when the version field in your config.json does not match the one in the package.json, which means that, as long as you do not explicitly set the version-field in your test-config.yml, the cache will always be cleared on each run when you type yarn test-gui.

[!TIP] If you just want to casually clear the cache for troubleshooting, you can also clear the cache by selecting the appropriate menu item in the "Help" menu, which saves you from having to dabble with anything technical.

--data-dir=path

Use this switch to specify a custom data directory, which holds your configuration files. Without this switch, the data directory defaults to %AppData%/Zettlr (on Windows 10 and newer), ~/.config/Zettlr (on Linux), or ~/Library/Application Support/Zettlr (on macOS). The path can be absolute or relative. Basis for the relative path will be either the binary's directory (when running a packaged app) or the repository root (when running an app that is not packaged). Remember to escape spaces or quote the path, if necessary. The ~ character to denote the home directory is not expanded in this case, so make sure to pass the entire path to your home directory if necessary. Due to a minor bug in Electron, an empty Dictionaries subdirectory is created in the default data directory, but it does not impact functionality.

--disable-hardware-acceleration

This switch causes Zettlr to disable hardware acceleration, which could be necessary in certain setups. For more information on why this flag was added, see issue #2127.

VSCode Extension Recommendations

This repository makes use of Visual Studio Code's recommended extensions feature. This means: If you use VS Code and open the repository for the first time, VS Code will tell you that the repository recommends to install a handful of extensions. These extensions are recommended if you work with Zettlr and will make contributing much easier. The recommendations are specified in the file .vscode/extensions.json.

Since installing extensions is sometimes a matter of taste, we have added short descriptions for each recommended extension within that file to explain why we recommend it. This way you can make your own decision whether or not you want to install any of these extensions (for example, the SVG extension is not necessary if you do not work with the SVG files provided in the repository).

If you choose not to install all of the recommended extensions at once (which we recommend), VS Code will show you the recommendations in the extensions sidebar so you can first decide which of the ones you'd like to install and then manually install those you'd like to have.

[!TIP] Using the same extensions as the core developer team will make the code generally more consistent since you will have the same visual feedback.

License

This software is licensed via the GNU GPL v3-License.

The brand (including name, icons and everything Zettlr can be identified with) is excluded and all rights reserved. If you want to fork Zettlr to develop another app, feel free but please change name and icons. Read about the logo usage.


  • Created: 18.10.2024
  • Updated: 05.02.2025
  • Progress: 16% (Project)
  • Permalink

Community gardening 🍀

Take conversational artifacts, e.g. today's conference sessions, and run hackathons based on the data, code and models being discussed.


~ PITCH ~

🅰️ℹ️ How might we leverage insights from conference discussions to create a digital platform that enhances community gardening initiatives? This platform should facilitate collaboration among local gardeners, provide access to resources, share best practices, and promote sustainable gardening methods. Let's harness the ideas, data, and models discussed during our sessions to prototype a solution that cultivates community spirit and environmental stewardship. Embrace your creativity and innovation to foster a thriving gardening community!


MOSIP

An API-first, open-standards-based foundational identity platform, MOSIP can be used by countries to customize, configure and build their own national ID systems. MOSIP is currently in various stages of adoption in 20+ countries across Africa, Southeast Asia, and Latin America and the Caribbean.


~ PITCH ~

🅰️ℹ️ Design and develop an innovative solution that enhances the adoption and user experience of MOSIP for national ID systems in diverse regions. Your project should focus on creating tools or applications that facilitate seamless integration of local needs and cultural contexts into the MOSIP framework. Consider accessibility, security, and user engagement as you prototype your ideas. Aim to empower communities by making national ID processes more inclusive, transparent, and efficient. Collaborate, share insights, and strive for fairness as you work towards impactful solutions that can be adopted in multiple countries.

~ README ~

MOSIP (https://mosip.io) stands for Modular Open-Source Identity Platform. It is an open-source software that governments or international organizations can use as a core to build foundational digital identity systems.

Releases

The latest release of MOSIP, version 1.2.0.1 LTS is here! Check out the exciting new services added and enhancements in the documentation.

To know more about MOSIP and its offerings, see our documentation on docs.mosip.io.

Latest Release

Version: 1.2.0.1

Older Releases

Refer Older Releases.

Resources

Contributions

MOSIP encourages you to contribute for global public good at all times. To know how you can contribute, refer to https://docs.mosip.io/1.2.0/community/code-contributions.

Communication

Join our Discourse community https://community.mosip.io


PlaceCal

A combination of technology, community development and public sector strategy designed to help people bring their community together by aggregating information about community groups and events.


~ PITCH ~

🅰️ℹ️ Imagine a platform that unites your community by effortlessly bringing together information about local groups, events, and activities. Your mission is to develop "PlaceCal," a dynamic tool that aggregates and showcases community resources, fostering connection and engagement among residents. Consider how technology can bridge gaps, making it easier for everyone to discover and participate in community initiatives—whether it's a local book club, volunteer opportunities, or neighborhood festivals. Focus on creating an inclusive experience that empowers users to contribute their own events and groups, ensuring no one is left out. Leverage your creativity to design a solution that not only functions smoothly but also resonates with diverse community members. How can you ensure that the platform is accessible and user-friendly for all ages and backgrounds? Emphasize collaboration and transparency in your approach, and remember that every idea counts. Together, let's create a vibrant community hub that encourages connection, participation, and joy!

~ README ~

PlaceCal

Introduction

PlaceCal is an online calendar which lists events and activities by and for members of local communities, curated around interests and locality.

The codebase doesn't currently have enough seeds to create a dev environment suitable for developing from scratch. If you're interested in contributing to PlaceCal please get in touch at [email protected]

To get an idea of the project and what we're about, check out the handbook.

Requirements

To run PlaceCal locally you will need to install the following dependencies:

Quickstart with docker for GFSC devs

Make sure all of the above dependencies are installed (and ask someone to add your public ssh key to the servers if you are staff).

Then make sure the docker daemon is running, and run

make setup_with_docker

Local site is now running at lvh.me:3000

Some other useful commands for developing can be found in the makefile.

Troubleshooting

If the make command fails and you can't work out why, here are some suggestions:

  • Do you have an older version of the database hanging around? Try running rails db:drop:all
  • Is the docker daemon running?
  • Is the port in use by another application or docker container? Try stopping or removing any conflicting containers
  • Are you using the correct node version? Try running nvm use

Quickstart for everyone else

Set up Postgresql locally with docker

If you don't already have Postgresql installed and running, you can set it up with docker, just run make docker. To tear down the docker setup, run make clean.

Run the setup script

bin/setup

Amongst other things, this will create an admin user for you:

Run the thing

  • Start the server with bin/dev
  • Make sure you use lvh.me:3000 instead of localhost:3000 or you will have authentication problems
  • The admin interface is at admin.lvh.me:3000
  • Access code docs through your local filesystem and update them with bin/rails yard

Importing calendars

To import all events, run the following command.

rails events:import_all_calendars

After this has run once, the following command can be run which attempts to skip calendars which have not been updated. This should be run regularly on a cron in production environments. If you are using dokku to deploy like we are, this is handled in the app.json config file.

rails events:scan_for_calendars_needing_import

To import one calendar, run:

rails events:import_calendar[100]

# nb: zsh users will need to escape brackets
rails events:import_calendar\[100\]

Testing, linting and formatting

PlaceCal tests are written in minitest. We use Rubocop to lint our Ruby code.

We use Prettier to format everything it's able to parse. We run this automatically as part of a pre-commit hook.

You can run the tests & rubocop with:

make test

Documentation

Further documentation for PlaceCal is in the PlaceCal Handbook.

The developer Procfile will load a yard language server, this is visible at http://localhost:8808.

If you are working with the code and are completely lost you can also try the GFSC discord server where you can prod a human for answers.

Generating new components

We use view_component to make components, and you can create a new one by running rails g component <Name> <args> Previously this system used mountain view, and some of the components are still generated using this.

More info here: https://viewcomponent.org/guide/generators.html

API

API examples and test environment are provided using Bruno.

Install it with your system package manager then point it at the collections directory.

Donations

If you'd like to support development, please consider sending us a one-off or regular donation on Ko-fi. You can do this through the "support" button in GitHub at the top of this repo.


Return Challenges Stages Categories