Нам нужны твои мозги

Хотите расти как разработчик и найти крутую работу? Не протирайте штаны — займитесь Open Source проектами. Так легче всего попасть в лучшие команды разработчиков и положить себе в резюме настоящий проект, вместо нелепых «примеров кода». Но найти подходящий проект для участия сложно. Начинаются лень и отговорки, а за ними — отсутствие профессионального роста, критики по-настоящему крутых программистов, уныние и застой.

На Cult of Martians мы собираем интересные задачи для современных веб-программистов. Можно выбрать подходящую по сложности, продолжительности и специализации. Задачи не выдуманы «из воздуха» — каждая решает насущную проблему, и решить ее можно через создание нового Open Source проекта или улучшение существующего. Решайте задачи, прокачивайтесь, присылайте решение на оценку. Лучших могут пригласить к себе на работу компании, программистам которых понравится ваше решение.

Узнавайте о новых задачах первыми

RSS

Помощь запрашиваетАндрей СитникАндрей Ситник Андрей Ситник

Фронт: Перевести postcss.org на Vite

Для уверенных в себе, задача на пару недель

Сейчас postcss.org использует Parcel для сборки сайта — он генерирует HTML-шаблон и ассеты, которые потом наполняет другой скрипт.

Нужно перевести проект на Vite — чтобы увеличить скорость сборки и уменьшить размер node_modules.

Польза: получить open source портфолио на Node.js.

Присылайте свои решения:

— Можно мне взять эту задачу?

Все задачи на этой странице еще не решены. Если задача вам интересна — берите и смело делайте. Спрашивать разрешения и становиться в очередь не нужно. Даже если кто-то сделает задачу быстрее вас, не останавливайтесь — ваше решение может быть лучше. Это Open Source!

Помощь запрашиваетАндрей СитникАндрей Ситник Андрей Ситник

Фронт: Перевести logux.io на Vite

Для уверенных в себе, задача на пару недель

Сейчас logux.io использует Parcel для сборки сайта — он генерирует HTML-шаблон и ассеты, которые потом наполняет другой скрипт.

Нужно перевести проект на Vite — чтобы увеличить скорость сборки и уменьшить размер node_modules.

Польза: получить open source портфолио на Node.js.

Присылайте свои решения:

Помощь запрашиваетАндрей СитникАндрей Ситник Андрей Ситник

Фронт: Сократить количество зависимостей в Astroturf

Для новичков, задача на неделю

Astroturf страдает от большого количества зависимостей. В node_modules он занимает 18 МБ и загружает под сотню подзависимостей.

Кажется, что их не должно быть сложно почистить.

Польза: получить open source портфолио на Node.js.

Присылайте свои решения:

Помощь запрашиваетАндрей СитникАндрей Ситник Андрей Ситник

Фронт: Перевести Logux Server на pino 7

Для уверенных в себе, задача на пару недель

Нужно обновить pino в Logux Server. Главная проблема в том, что нужно переписать humanFormatter на Pino Transports.

Польза: получить open source портфолио на Node.js.

Присылайте свои решения:

Помощь запрашиваетАндрей СитникАндрей Ситник Андрей Ситник

Фронт: Добавить частичную загрузку переводов Nano Stores I18n

Для новичков, задача на неделю

Сейчас Nano Stores I18n загружает все переводы для выбранного языка сразу. Разработчик должен передать функцию вида:

get (locale) {
   return fetch(`/translations/${locale}.json`)
}

Но было бы круто иметь тут опциональный аналог tree-shaking, чтобы грузить переводы блоками — только те блоки, который нужны для используемых на странице компонентов.

Например, разработчик может ввести правило давать имена компонентам (которые используются в функции перевода) вида main/post или settings/user. Переводы он тоже будет хранить блоками, объединяя компоненты с одинаковым префиксом: translations/ru/main.json или translations/settings/ru.json.

В get I18n будет передавать имена всех компонентов, для которых не хватает перевода. Тогда разработчик может передать такую функцию:

get (locale, components) {
   return Promise.all(
    components
      .map(name => name.split('/')[0])
      .unique()
      .map(chunk => fetch(`/translations/${locale}/${chunk}.json`))
  )
}

Польза: получить open source портфолио на JS.

Присылайте свои решения:

Помощь запрашиваетАндрей СитникАндрей Ситник Андрей Ситник

Фронт: Добавить цветовое кодирование случайных ID в логах Logux Server

Для новичков, задача на неделю

В логах Logux Server есть много длинных полуслучайных кодов, которые надо между собой сравнивать:

  • ID клиента вида 10:FnXaqDxY.
  • Action ID вида 1487805099387 10:FnXaqDxY 0 (в середине содержит ID клиента).
  • action.id у action с type logux/processed и logux/undo.

Нужно добавить цветовой код (например, 3 цвета на ID клиента и 5 цветов на Action ID), чтобы можно было быстро искать связанные записи в логе.

Задача требует дизайн-похода: не просто реализовать код, а попробовать разные варианты, чтобы найти самый полезный.

Польза: получить open source портфолио на Node.js.

Присылайте свои решения:

Помощь запрашиваетАндрей СитникАндрей Ситник Андрей Ситник

Фронт: Добавить очереди в Logux Server

Для уверенных в себе, задача на пару недель

Logux Server по WebSocket получает набор операций от клиента, и для каждой операции вызывает callback, переданный разработчиком.

Сейчас обработка всех операций идет паралелльно. Но часто операции связаны: например, сначала может быть операция создания пользователя, а потом — операция смены прав у этого же пользователя. При паралелльной обработке операция смены прав может не найти пользователя, так как операция его создания идет паралелльно.

Нужно добавить последовательную обработку операций в виде очереди.

Задача сложная — требует изменить несколько проектов и хорошо продумать все необычные сценарии.

Польза: получить open source портфолио на Node.js.

Присылайте свои решения: