1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/ktianc-kinit

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

logo

[О проекте]

Kinit — это набор решений для создания back-end и front-end, который можно использовать как шаблон для новых проектов!

Разделенная архитектура front-end и back-end, готовая к использованию, с последними технологиями!

Высокая производительность, эффективность, внешний вид и простота расширения

Долгосрочное обслуживание и активные обновления!

ОписаниеKinit — это полностью открытая платформа для быстрого разработки, доступная для личного и корпоративного использования без каких-либо ограничений. - Веб-сервер использует современный, быстрый (высокопроизводительный) FastAPI асинхронный фреймворк + автоматически генерирует интерактивную документацию API + (строгие типы данных) Pydantic + (высокая эффективность) SQLAlchemy 2.0;

  • Для ПК используется vue-element-plus-admin, Vue3, Element Plus, TypeScript и другие основные технологии;
  • Для мобильных устройств используется uni-app, Vue2, uView 2 как основные технологии;
  • Веб-сервер использует Typer для командной строки, что упрощает инициализацию данных, миграцию моделей таблиц и т. д.;
  • Веб-сервер использует новую функцию ORM-модели по конфигурации, которая автоматически генерирует код CRUD;
  • Поддержка планировщика задач с использованием APScheduler + Redis как очередь сообщений + MongoDB как хранилище данных;
  • Аутентификация и авторизация используют OAuth2 с хэшированными паролями и JWT Bearer токенами.com/ru/tutorial/security/oauth2-jwt/), поддерживают многоплатформенные системы аутентификации;
  • Поддержка динамического управления правами доступа, удобное управление правами доступа различными способами, управление правами доступа на уровне кнопок;
  • Поддержка асинхронных операций с базами данных MySQL, MongoDB и Redis;
  • Поддержка развертывания с использованием docker-compose;
  • Готовое решение для backend и frontend, которое можно использовать как шаблон для новых проектов или для изучения и в качестве примера. Всегда следит за последними технологическими трендами и старается обновляться в первую очередь;
  • Фронтенд-фреймворк vue-element-plus-admin всегда поддерживается и обновляется. ## Особое упоминаниеvue-element-plus-admin: Бэкенд-интеграционное решение на основе vue3, element-plus и typescript

RuoYi 若依官方网站: RuoYi — это отличная Java-система управления бэкендом

django-vue-admin: django-vue-admin — это отличное решение для разработки бэкенд-системы на основе Django

Кронос (xiaonuo.vip): Первая в Китае платформа быстрого разработки с использованием криптографии

Группа WeChat

Предоставляется группа для технического обмена. В данный момент в группе еще мало людей, но я искренне надеюсь, что вы присоединитесь и активно обсудите вопросы. Поскольку в проекте пока нет подробной документации по использованию (я все еще должен ее написать, и мне немного стыдно), вы сможете легко обсудить возникающие вопросы и предложить новые функции, которые вы хотели бы видеть. Добро пожаловать!

25 апреля 2024 года группа достигла 200 человек, и теперь для присоединения требуется приглашение. Если вы хотите присоединиться, свяжитесь со мной, укажите, что вы хотите присоединиться к группе, и я добавлю вас.

logo

Онлайн-демонстрация

Адрес для демонстрации на ПК: https://kinit.ktianc.top

Демонстрация WeChat Mini Program:

  • Поиск: kinit
  • Сканирование:

    logo

    Административный аккаунт:

    • Логин: 15020221010
    • Пароль: kinit2022

    Тестовый аккаунт:

    • Логин: 15020240125
    • Пароль: test

    Автоматическое создание кода для CRUD-операций

    1. В настоящее время поддерживается только создание кода для API.
    2. В настоящее время поддерживается только запуск с помощью скриптов, в будущем будет добавлена возможность запуска через веб-интерфейс.
    3. Код создается на основе настроенных ORM-моделей и поддерживает синхронизацию параметров, таких как значения по умолчанию и обязательность.

    Адрес скрипта: scripts/crud_generate/main.py

    Для использования этой функции сначала необходимо вручную создать ORM-модели, затем код будет создан на основе этих моделей. Включает в себя следующие коды:

    1. Код сериализации schema

      Имя файла schema будет использовать настроенное имя en_name. Если файл уже существует, он будет удален, а затем создан заново. Схема кода содержимого сгенерирована после чего новый созданный класс будет импортирован в файл __init__.py.

    2. Dal код для работы с данными

      Имя dal файла будет использовать по умолчанию crud.py, в настоящее время поддержка кастомизации не предусмотрена.

      Если dal файл уже существует и содержит код, то новый dal класс модели будет добавлен в конец файла, а также будут объединены импортируемые модули в файле.3. param код для параметров запроса

      Имя param файла будет формироваться аналогично схеме.

      Будет создан минимальный по умолчанию param класс.

    3. view код для представления

      Имя view файла также будет использовать по умолчанию view.py, в настоящее время поддержка кастомизации не предусмотрена.

      Если view файл уже существует, то будут выполнены аналогичные действия как для dal.

    В скрипте в настоящее время имеются два метода:

    if __name__ == '__main__':
        from apps.vadmin.auth.models import VadminUser
    
        crud = CrudGenerate(VadminUser, "пользователь", "user")
        # только вывод кода, без выполнения создания и записи
        crud.generate_codes()
        # создание и запись кода
        crud.main()

    В настоящее время нет проверки существующего кода, например, если UserDal уже существует, он всё равно будет добавлен.

    B站 видео демонстрация: https://www.bilibili.com/video/BV19e411a7zP/

    Исходный код

    Адрес на gitee (рекомендуемый): https://gitee.com/ktianc/kinit

    Адрес на github: https://github.com/vvandk/kinit

    Встроенные функции для ПК

    • Меню управления: настройка системного меню, права доступа к операциям, кнопкам, интерфейсам и API.

    • Управление отделами: поддержка конфигурации отделов с неограниченным уровнем вложенности.

    • Управление ролями: настройка ролей, права доступа к меню и отделам.

    • Управление пользователями: пользователи являются операторами системы, эта функция предназначена для настройки пользователей системы.- [x] Личная страница: настройка личной информации пользователя, изменение пароля и т.д.

    • Управление словарями: поддержка управления часто используемыми фиксированными данными в системе.

    • Загрузка файлов: интеграция с облачным хранилищем Aliyun OSS и локальным хранилищем.

    • Аутентификация: поддержка входа пользователя с использованием номера телефона и пароля, а также входа с использованием кода подтверждения.

      Объяснение: пароль нового пользователя по умолчанию будет равен последним шести цифрам номера телефона;

      Объяснение: пользователь должен изменить свой пароль при первом входе.

    • Управление системой: динамическая настройка параметров системы

      заголовок сайта, логотип, описание, иконка, номер регистрации, информация в подвале, информация для WeChat Mini Program и т.д.

    • Распределение пользователей: отображение распределения пользователей по регионам с использованием карт Google Maps

    • Обзор данных: предоставление двух шаблонов для статистического анализа данных, что позволяет более наглядно просматривать статистику

    • Умная панель: отображение данных анализа данных для реального времени мониторинга качества воздуха в офисе

    • Журнал входа: регистрация и поиск журналов входа пользователей

    • Журнал действий: детальное отслеживание действий пользователей системы при каждом использовании функций- [x] Документация API: предоставление автоматически сгенерированной интерактивной документации API и документации ReDoc

    • Импорт/Экспорт: поддержка гибкого импорта и экспорта данных

    • Добавлены асинхронные операции с базами данных Redis, MySQL, MongoDB

    • Командная строка: добавлено приложение Typer для командной строки, что упрощает инициализацию данных и миграцию моделей таблиц

    • Планирование задач: онлайн-управление задачами (добавление, изменение, удаление) с возможностью просмотра журналов выполнения задач

    Встроенные функции для мобильных устройств

    • Аутентификация: поддержка входа пользователей с использованием номера телефона и пароля, а также однокнопочного входа через WeChat

      Пояснение: по умолчанию пароль нового пользователя равен последним шести цифрам номера телефона;

      Пояснение: при первом входе пользователь должен изменить текущий пароль.

    • Навигация: Главная страница, Мой профиль, Рабочий стол

    • Основные функции: редактирование профиля, изменение аватара, изменение пароля, часто задаваемые вопросы, о нас и т.д.

    Предварительная подготовка

    Система сервера- Python3: знание основных синтаксических конструкций Python3

    • FastAPI: знание фреймворка для создания веб-интерфейсов API

    • SQLAlchemy 2.0: работа с базами данных

    • Typer: знание использования инструментов командной строки

    • MySQL и MongoDB и Redis: знание баз данных для хранения данных

    • Документация API для IP-запросов: сервис для поиска IP-адресов, предоставляющий 1000 бесплатных запросов### Версия для ПК - node и git - окружение для разработки проекта

    • Vite - знакомство с особенностями Vite

    • Vue3 - знание основных синтаксических конструкций Vue

    • TypeScript - знание основных синтаксических конструкций TypeScript

    • ES6+ - знание основных синтаксических конструкций ES6

    • Vue-Router-Next - знание основных синтаксических конструкций Vue Router

    • Element-Plus - использование основных элементов Element-Plus

    • vue3-json-viewer: простой и удобный компонент для отображения JSON-контента, совместимый с Vue3 и Vite.

    • API карт Google (amap.com): JSAPI 2.0 - это четвертая бесплатная версия Web-карты от Google Maps API.### Мобильная разработка

    • uni-app - освоение базовых синтаксисов uni-app

    • Vue2 - освоение базовых синтаксисов Vue

    • uView UI 2 - базовое использование компонентов uView UI

    • uni-read-pages - автоматическое чтение всех конфигураций из файла pages.json.

    • uni-simple-router - использование vue-router для перехода между маршрутами в uni-app.### Планирование задач

    • Python3 - Освоение базовых синтаксисов Python3

    • APScheduler - Освоение планировщика задач

    • MongoDB и Redis - Освоение баз данных для хранения данных

    Установка и использование

    Получение кода

    git clone https://gitee.com/ktianc/kinit.git

    Подготовка

    Зависимости для серверной части:
    Python == 3.10.x (другие версии не проверялись)
    Зависимости для клиентской части:
    nodejs >= 18.0 < 19
    pnpm >= 8.1.0 < 9
    Версии баз данных:
    MySQL >= 8.0 (версии выше 8 не проверялись, версии ниже 8 не проверялись, PostgreSQL не проверялся, замена может потребовать настроек)
    MongoDB >= 7.0.12 < 8 (версии выше 7 или ниже 7 не проверялись)
    Redis (рекомендуется использовать последнюю стабильную версию)

    Серверная часть

    1. Установка зависимостей

      cd kinit-api
      
      pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
    2. Изменение конфигурации окружения проекта

      Изменение файла application/settings.py

      # Безопасное предупреждение: Не включайте отладку в режиме производства!
      DEBUG = True # Если текущее окружение - разработка, установите True, если производство, установите False
    3. Изменение конфигурации базы данных проекта

      В каталоге application/config - development.py: для разработки

      • production.py: для производства
    # Конфигурация подключения к базе данных MySQL
    # Официальная документация движка: https://www.osgeo.cn/sqlalchemy/core/engines.html
    # Пример конфигурации подключения к базе данных: mysql+asyncmy://имя_пользователя:пароль@адрес_базы:порт/имя_базы
    SQLALCHEMY_DATABASE_URL = "mysql+asyncmy://имя_пользователя:пароль@адрес_базы:порт/имя_базы"
    SQLALCHEMY_DATABASE_TYPE = "mysql"
    
    # Конфигурация Redis
    REDIS_DB_ENABLE = True
    REDIS_DB_URL = "redis://:пароль@адрес:порт/база"
    
    # Конфигурация MongoDB
    MONGO_DB_ENABLE = True
    MONGO_DB_NAME = "имя_базы"
    MONGO_DB_URL = f"mongodb://имя_пользователя:пароль@адрес:порт/? authSource={MONGO_DB_NAME}"
    
    # Конфигурация облачного хранилища OSS от Alibaba Cloud
    # AccessKey предоставляет полный доступ ко всем API, что повышает риск. Рекомендуется создавать и использовать пользователей RAM для доступа к API или повседневного обслуживания. Пожалуйста, перейдите в консоль управления RAM для создания пользователей RAM.
    # yourEndpoint укажите конечную точку, соответствующую региону, в котором находится ваш Bucket. Например, для Восточный Китай (Гуанчжоу) конечная точка будет https://oss-cn-hangzhou.aliyuncs.com.
    # * [accessKeyId] {String} - AccessKey, созданный в консоли управления Alibaba Cloud.
    # * [accessKeySecret] {String} - AccessSecret, созданный в консоли управления Alibaba Cloud.
    # * [bucket] {String} - Bucket, созданный в консоли управления или с помощью PutBucket.
    # * [endpoint] {String} - Регион, в котором находится ваш Bucket, по умолчанию oss-cn-hangzhou.
    ALIYUN_OSS = {
    ```       "accessKeyId": "идентификатор_доступа",
            "accessKeySecret": "секретный_идентификатор_доступа",
            "endpoint": "конечная_точка",
            "bucket": "корзина",
            "baseUrl": "базовый_URL"
        }
         # Получение информации о местоположении IP-адреса
        # Документация: https://user.ip138.com/ip/doc
        IP_PARSE_ENABLE = True
        IP_PARSE_TOKEN = "IP_PARSE_TOKEN"
        ```4. Настройте информацию о базе данных в файле `alembic.ini` для использования в маппинге базы данных.   ```python
       # mysql+pymysql://имя_пользователя_базы_данных:пароль_пользователя_базы_данных@адрес_базы_данных:порт_базы_данных/имя_базы_данных
       
       [dev]
       # Разработка окружение
       version_locations = %(here)s/alembic/versions_dev
       sqlalchemy.url = mysql+pymysql://root:123456@127.0.0.1/kinit
       
       
       [pro]
       # Продакшн окружение
       version_locations = %(here)s/alembic/versions_pro
       sqlalchemy.url = mysql+pymysql://root:123456@127.0.0.1/kinit
    1. Создайте базу данных

      mysql> create database kinit;             # Создание базы данных
      mysql> use kinit;                         # Использование созданной базы данных
      mysql> set names utf8;                    # Установка кодировки
    2. Инициализация данных базы данных

      # Выполнить в корневой директории проекта, предварительно создав базу данных
      # Автоматически мигрирует модели в базу данных и создаст начальные данные
      # Перед выполнением убедитесь, что окружение совпадает с настройками в файле settings.py
      
      # (окружение продакшн)
      python3 main.py init
      
      # (окружение разработки)
      python3 main.py init --env dev
    3. Изменение базовых настроек проекта

      Измените ключевые данные в таблице базы данных - vadmin_system_settings

      # Настройки SMS от Alibaba Cloud
      sms_access_key
      sms_access_key_secret
      sms_sign_name_1
      sms_template_code_1
      sms_sign_name_2
      sms_template_code_2
      
      # Настройки карт Google Maps
      map_key
      
      # Настройки WeChat Mini Programs
      wx_server_app_id
      wx_server_app_secret
      
      # Настройки электронной почты
      email_access
      email_password
      email_server
      email_port
      ```8. Запуск
      

      Выполнить в корневой директории проекта

      python3 main.py run

    Версия для ПК

    1. Установка зависимостей
    cd kinit-admin
    
    pnpm install
    1. Запуск
    pnpm run dev
    1. Пакетирование
    pnpm run build:pro

    Планирование задач

    1. Установка зависимостей

      # Установка зависимостей
      pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
      
      # Третьи источники:
      1. Источник Alibaba: https://mirrors.aliyun.com/pypi/simple/
    2. Изменение настроек базы данных проекта

      В директории application/config

      • development.py: окружение разработки

      • production.py: окружение продакшн

    # Конфигурация базы данных MongoDB
    # Это та же база данных, что и для интерфейса
    MONGO_DB_NAME = "имя_базы_данных"
    MONGO_DB_URL = f"mongodb://имя_пользователя:пароль@адрес:порт/?authSource={MONGO_DB_NAME}"
    
    
    # Конфигурация базы данных Redis
    # Это та же база данных, что и для интерфейса
    REDIS_DB_URL = "redis://:пароль@адрес:порт/имя_базы_данных"
    1. Запуск

      python3 main.py

    Доступ к проекту

    • Адрес: http://localhost:5000 (по умолчанию, если адрес был изменён, используйте конфигурационный файл)
    • Логин: 15020221010 Пароль: kinit2022
    • Адрес интерфейса: http://localhost:9000/docs (по умолчанию, если адрес был изменён, используйте конфигурационный файл)

    Установка Docker Compose для продакшена

    Подготовка

    1. Получение кода

      git clone https://gitee.com/ktianc/kinit.git
    2. Изменение конфигурации проекта:

      1. Изменение конфигурации API: Путь к файлу: kinit-api/application/settings.py

        # Безопасность: не включайте отладку в продакшне!
        DEBUG = False # Для продакшна должно быть False
      2. Изменение конфигурации задач:

        Путь к файлу: kinit-task/application/settings.py

        # Безопасность: не включайте отладку в продакшне!
        DEBUG = False # Для продакшна должно быть False
    3. (Если база данных не установлена, этот шаг не требуется) Если у вас уже есть база данных MySQL, Redis или MongoDB, выполните следующие действия:

      Создайте пользователя и базу данных в соответствующей базе данных и измените следующие параметры подключения на существующие.

      1. Изменение конфигурации API:

        Путь к файлу: kinit-api/application/config/production.py

        # Конфигурация MySQL
        # Документация по подключению: https://www.osgeo.cn/sqlalchemy/core/engines.html
        # Формат подключения: mysql+asyncmy://имя_пользователя:пароль@адрес:порт/имя_базы_данных
        SQLALCHEMY_DATABASE_URL = "mysql+asyncmy://root:123456@177.8.0.7:3306/kinit"
        
        # Конфигурация Redis
        # Формат: redis://:пароль@адрес:порт/имя_базы_данных
        REDIS_DB_ENABLE = True
        REDIS_DB_URL = "redis://:123456@177.8.0.5:6379/1"
        
        # Конфигурация MongoDB
        # Формат: mongodb://имя_пользователя:пароль@адрес:порт/?authSource=имя_базы_данных
        MONGO_DB_ENABLE = True
        MONGO_DB_NAME = "kinit"
        MONGO_DB_URL = f"mongodb://kinit:123456@177.8.0.6:27017/?authSource={MONGO_DB_NAME}"
      2. Изменение конфигурации задач Путь к файлу: `kinit-task/application/config/production.py````python

    Конфигурация базы данных Redis

    Это та же база данных, что и для интерфейса

    Формат: "redis://:пароль@адрес:порт/имя_базы_данных"

    REDIS_DB_ENABLE = True REDIS_DB_URL = "redis://:123456@177.8.0.5:6379/1"

    Конфигурация базы данных MongoDB

    Это та же база данных, что и для интерфейса

    Формат: mongodb://имя_пользователя:пароль@адрес:порт/?authSource=имя_базы_данных

    MONGO_DB_ENABLE = True MONGO_DB_NAME = "kinit" MONGO_DB_URL = f"mongodb://kinit:123456@177.8.0.6:27017/?authSource={MONGO_DB_NAME}"

    
    3. Комментарий существующих баз данных в файле `docker-compose.yml`
    
    4. Настройка конфигурации Aliyun OSS и интерфейса IP-разбора (опционально)
    
       Путь к файлу: `kinit-api/application/config/production.py`   ```python
       # Конфигурация облачного хранилища Aliyun OSS
       # AccessKey предоставляет доступ ко всем API, что очень опасно. Рекомендуется создавать и использовать пользователей RAM для доступа к API или повседневного обслуживания. Пожалуйста, перейдите в консоль управления RAM для создания пользователей RAM.
       # yourEndpoint заполняется конечной точкой региона, в котором находится Bucket. Например, для Восточного Китая (Hangzhou) конечная точка заполняется как https://oss-cn-hangzhou.aliyuncs.com.
       #  *  [accessKeyId] {String} - AccessKey, созданный в консоли управления Aliyun.
       #  *  [accessKeySecret] {String} - AccessSecret, созданный в консоли управления Aliyun.
       #  *  [bucket] {String} - Bucket, созданный в консоли управления или с помощью PutBucket.
       #  *  [endpoint] {String} - Регион, в котором находится Bucket, по умолчанию oss-cn-hangzhou.
       ALIYUN_OSS = {
           "accessKeyId": "accessKeyId",
           "accessKeySecret": "accessKeySecret",
           "endpoint": "endpoint",
           "bucket": "bucket",
           "baseUrl": "baseUrl"
       }
       
       # Получение местоположения IP-адреса
       # Документация: https://user.ip138.com/ip/doc
       IP_PARSE_ENABLE = False
       IP_PARSE_TOKEN = "IP_PARSE_TOKEN"
       ```5. Упаковка фронтенд-проекта:
    
       ```shell
       cd kinit-admin
       
       # Установка зависимостей
       pnpm install
       
       # Упаковка
       pnpm run build:pro

    Запуск и инициализация проекта

    # Запуск и создание всех контейнеров
    docker-compose up -d
    
    # Инициализация данных
    docker-compose exec kinit-api python3 main.py init
    
    # Перезапуск всех контейнеров
    docker-compose restart
    
    
    # Другие команды:
    
    # Остановка всех контейнеров
    docker-compose down
    
    # Просмотр состояния всех контейнеров
    docker-compose ps -a

    Доступ к проекту

    • Адрес: http://localhost (по умолчанию этот адрес, если был изменен, используйте конфигурационный файл)
    • Логин: 15020221010 Пароль: kinit2022
    • Адрес интерфейса: http://localhost:9000/docs (по умолчанию этот адрес, если был изменен, используйте конфигурационный файл)

    Как внести вклад

    Вы можете открыть issue или отправить Pull Request.

    Pull Request:

    1. Fork код
    2. Создайте свой ветвь: git checkout -b feat/xxxx
    3. Отправьте свои изменения: git commit -am 'feat(function): add xxxxx'
    4. Отправьте вашу ветвь: git push origin feat/xxxx
    5. Отправьте pull request

    Поддержка браузеров

    Рекомендуется использовать браузер Chrome 80+ для локальной разработки

    Поддерживает современные браузеры, не поддерживает IE

    IE Edge Firefox Chrome Safari
    не поддерживается последние 2 версии последние 2 версии последние 2 версии последние 2 версии

    MIT

    Примеры экранов для ПК

    image-20221010214526082

    image-20221010214526082

    image-20221010214526082

    image-20221010214526082

    image-20221010214526082

    1688392266702

    image-20221010214526082

    image-20221010214526082

    image-20221010214526082

    image-20221010214526082

    image-20221010214526082

    image-20221010214526082

    Примеры экранов для альтернативной разметки

    Рисунок 1

    image-20221010214526082

    Рисунок 2

    image-20221010214526082

    Рисунок 3

    image-20221010214526082

    Рисунок 4

    image-20221010214526082

    Примеры экранов WeChat Mini Program

    <tr>
        <td><img src="https://k-typora.oss-cn-beijing.aliyuncs.com/kinit/1670077811740.jpg"/></td>
        <td><img src="https://k-typora.oss-cn-beijing.aliyuncs.com/kinit/1670077826257.jpg"/></td>
        <td><img src="https://k-typora.oss-cn-beijing.aliyuncs.com/kinit/1670077835024.jpg"/></td>
    </tr>
    <tr>
        <td><img src="https://k-typora.oss-cn-beijing.aliyuncs.com/kinit/1670077849753.jpg"/></td>
        <td><img src="https://k-typora.oss-cn-beijing.aliyuncs.com/kinit/1670077860987.jpg"/></td>
        <td><img src="https://k-typora.oss-cn-beijing.aliyuncs.com/kinit/1670077870240.jpg"/></td>
    </tr>

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Система управления с разделением фронтенда и бэкенда на основе FastAPI + vue3, включающая версии для ПК и WeChat小程序. Для ПК используется: Vue3+TypeScript+Vite+Element Plus, для WeChat小程序: Uni-APP + uview ui. Бэкенд реализован с использованием: FastAPI+Pydantic+SQLAlchemy 2.0+MySQL. Поддерживается асинхронное хранение данных, RBAC-управление прав... Развернуть Свернуть
Vue и 6 других языков
MIT
Отмена

Обновления (65)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/ktianc-kinit.git
git@api.gitlife.ru:oschina-mirror/ktianc-kinit.git
oschina-mirror
ktianc-kinit
ktianc-kinit
master