Группа в Telegram: Pinkary.com/telegram » .
Добро пожаловать в Пинкари! Pinkary — это целевая страница для всех ваших ссылок и место для общения с единомышленниками без лишнего шума.
Изначально он был создан, чтобы помочь людям более организованно делиться своими ссылками. Всего за 15 часов мы прошли путь от composer create-project до производства, а через 24 часа у нас было более 1000 пользователей.
Исходный код все еще демонстрирует некоторые признаки спешки; Вот почему мы считаем важным поделиться этим с вами — чтобы вы могли увидеть, как мы его создали , сочетая быстрый темп с учетом обстоятельств с качеством, к которому мы всегда стремимся.
Со временем нам удалось добавить больше функций, таких как лента, исследование, вопросы, лайки и многое другое. Мы также улучшили дизайн, добавили тесты и улучшили общее качество кода. Предстоит еще многое сделать, но самое главное — существует огромная возможность сделать этот проект управляемым сообществом .
Pinkary — обычное приложение Laravel; он построен на основе Laravel 11 и использует Livewire/Tailwind CSS для внешнего интерфейса. Если вы знакомы с Laravel, вы должны чувствовать себя как дома.
С точки зрения локальной разработки можно использовать следующие требования:
Если у вас есть эти требования, вы можете начать с клонирования репозитория и установки зависимостей:
git clone https://github.com/pinkary-project/pinkary.com.git
cd pinkary.com
git checkout -b feat/your-feature # or fix/your-fixНе отправляйте данные напрямую в
mainветку . Вместо этого создайте новую ветку и переместите ее в свою ветку.
Затем установите зависимости с помощью Composer и NPM:
composer install
npm install После этого настройте файл .env :
cp .env.example .env
php artisan key:generateПодготовьте базу данных и запустите миграцию:
touch database/database.sqlite
php artisan migrateСвяжите хранилище с общей папкой:
php artisan storage:linkВ отдельном терминале создайте активы в режиме просмотра:
npm run devТакже в отдельном терминале запустите воркер очереди:
php artisan queue:workНаконец, запустите сервер разработки:
php artisan serveПримечание. По умолчанию электронные письма отправляются драйверу
log. Вы можете изменить это в файле.envна что-то вродеmailtrap.
Как только вы закончите вносить изменения в код, обязательно запустите набор тестов, чтобы убедиться, что все по-прежнему работает:
composer testЕсли все зеленое, нажмите свою ветку и создайте запрос на включение:
git commit -am " Your commit message "
git pushПосетите github.com/pinkary-project/pinkary.com/pulls и создайте запрос на включение.
Пинкари использует несколько инструментов для обеспечения качества и согласованности кода. Конечно, мы предпочитаем использовать Pest для тестирования, а для статического анализа мы также используем PHPStan. Покрытие типов Pest составляет 100 %, и набор тестов также имеет 100 % покрытие.
Что касается стиля кода, мы используем Laravel Pint, чтобы гарантировать единообразие кода и соответствие соглашениям Laravel. Мы также используем Rector, чтобы убедиться, что код обновлен до последней версии PHP.
Вы запускаете эти инструменты по отдельности, используя следующие команды:
# Lint the code using Pint
composer lint
composer test:lint
# Refactor the code using Rector
composer refactor
composer test:refactor
# Run PHPStan
composer test:types
# Run the test suite
composer test:unit
# Run all the tools
composer testЗапросы на включение, не прошедшие набор тестов, не будут объединены. Итак, как предложено в разделе «Установка», обязательно запустите набор тестов перед отправкой ветки.
Pinkary размещен на DigitalOcean и использует Laravel Forge для управления сервером и развертываниями. Сервер работает на Ubuntu 22.04 (LTS) x64 и представляет собой диск с 2 виртуальными процессорами по 2 ГБ/25 ГБ.
Единственный сервис, который мы используем, — это Mailcoach для управления отправкой электронных писем. Кроме того, SQLite используется в качестве драйвера базы данных, драйвера сеансов, драйвера очереди, драйвера кэша и т. д.
Резервное копирование серверов осуществляется компанией Digital Ocean ежедневно.
Pinkary — это программное обеспечение с открытым исходным кодом, действующее под лицензией GNU Affero General Public License.