Giter Site home page Giter Site logo

it-beard / bloggers-cms Goto Github PK

View Code? Open in Web Editor NEW
51.0 6.0 14.0 3.61 MB

Content-management system for bloggers

Home Page: https://github.com/it-beard/bloggers-cms/wiki

License: Apache License 2.0

C# 56.39% HTML 38.64% CSS 4.71% Dockerfile 0.27%
cms dotnet webassembly

bloggers-cms's Introduction

License Stars Issues

Deploy apps to Production

Bloggers CMS - это система управления контентом, разрабатываемая специально под задачи блогеров.
Работает на базе технологий .NET 7 и Blazor WebAssembly

CMS позволяет вести учёт:

  • Контента
  • Участников контента
  • Клиентов
  • Доходов и расходов
  • Подарков и конкурсов

Дополнительные фичи:

  • Система аутентификации на базе Auth0 (может быть отключена)
  • Гибкая система внутренних настроек
  • Гибкие фильтры по сущностям
  • Возможность вести учёт нескольких Брендов в рамках одного интерфейса
    • "Бренд" - это сущность, к которой привязывается контент, участники контента, доходы и расходы. Это может быть отдельный YT-канал, блогер, проект, компания и т.д.
  • Небольшие рекомендательные возможности

Запуск

  1. Установите и настройте SQL базу данных
  2. Отключите Auth0-аутентификацию
    • По умолчанию в CMS включена Auth0-аутентификация, требующая дополнительных танцев с бубном.
    • Для отключения Auth0-аутентификации выставьте параметр Auth0:Enabled в значение false в следующих файлах:
      • bloggers-cms/Pds/Pds.Web/wwwroot/appsettings.Production.json - отключает аутентификацию на стороне фронтенда
      • bloggers-cms/Pds/Pds.Web/wwwroot/appsettings.LocalDevelopment.json - отключает аутентификацию на стороне локального инстанса фронтенда (localhost)
      • bloggers-cms/Pds/Pds.Api/appsettings.json - отключает аутентификацию на стороне бекенда
  3. Настройте CMS в соответствии с описанием в разделе "Основные настройки".
  4. Запустите проекты Pds.Api и Pds.Web

Миграция базы данных произайдёт автоматически при первом запуске проекта Pds.Api

Docker support

Для запуска приложения в тестовом режиме достаточно ввести команду docker compose -f "./Pds/.run/docker-compose.yaml" up -d

Особенности работы приложения в Docker:

  1. По умолчанию Auth0-аутентификация выключена.
  2. Данные из базы хранятся в выделенном volume, что позволяет сохранить состояние даже после перезагрузки/пересоздания контейнеров.
  3. Нет поддержки TLS/SSL, следовательно все работает по HTTP.
  4. Приложение запущено в режиме Development
  5. Фронтенд доступен по ссылке http://localhost:5000.
  6. Для хостинга Blazor используется NGINX

Основные настройки

Проект Pds.Web

Это фронтенд Blogger CMS, работает на Blazor WebAssembly

Основные настройки расположенны в файлах bloggers-cms/Pds/Pds.Web/wwwroot/appsettings.Production.json (используются на продакшене) и bloggers-cms/Pds/Pds.Web/wwwroot/appsettings.LocalDevelopment.json (используются при запуске локально)

  • Секция Auth0 содержит настройки аутентификации Auth0.
  • Параметр BackendApi:Url содержит URL развернутого инстанса Pds.Api.

Проект Pds.Api

Это бекенд-api Blogger CMS, работает на .NET

Настройки проекта находятся в файле bloggers-cms/Pds/Pds.Api/appsettings.json

  • Секция Logging содержит настройки логирования. Значения по-умолчанию изменений не требуют.
  • Секция AllowedOrigins содержит список корневых URL'ов разрешенных фронтенд-приложений. Внесите сюда корневую ссылку на развернутый инстанс Pds.Web.
  • Секция Auth0 содержит настройки аутентификации Auth0.
  • Параметр ConnectionStrings:DefaultConnection содержит строку подключения к базе данных.

Полезные ссылки

Общение

По всем вопросам сюда

Лицензия

Apache License 2.0, подробнее тут LICENSE.

bloggers-cms's People

Contributors

akartynnik avatar alex2021cyberhuman avatar catdog50rus avatar demchenkov avatar itbeard avatar jointvirt avatar maksadkhodzhabekov avatar pingvin1308 avatar skrypi4 avatar twinpeakss avatar vadimkholodilo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

bloggers-cms's Issues

"Delete person" button

Should be implemented in Persons list page
Only archived person can be deleted
Before delete should appears popup with confirmation.

Карта персон

Необходимо создать карту, на которой будут отображаться все персоны из системы

Initialize DI

  • Add Autofac support
  • Create slim "Person" page and show persons from DB

Implement user checking while authentication

As an owner of the system, I must be able to grant or dismiss access to the system for users by their email.
As a possible solution, I suggest create a table "Users" and save their emails of users that have assess to the system.
While authentication through Auth0 (#3 ) we also need check if the user exists in DB and only after that grand access

Can we use middleware for that? IDK if it possible for Blazor. Will see.

Проверка существования клиента при создании

При создании клиента необходимо на стороне бэкенда проверять есть ли клиент с таким же именем (обе стороны проверки привести к lowercase). Если есть - выдавать на UI соответствующую ошибку

В дефолтной миграции нет брендов

Описание бага: без брендов проект не заведется

Ожидаемое поведение: нужно добавить два дефолтных бренда - АйТиБороду и Тёмный Лес

Добавить "бесплатный" контент

На UI создания контента добавить чекбокс "бесплатно". В этом случае для контента не создается Bill и в списке контента от отображается как "Бесплатно"

Develop creating person logic for PersonService

Validation process:

  • check required fields
  • check if the person already exists

Results:
Information about a person saves in the database
Creating a request with wrong information about the person returns an error result with a description.

Неверный редиректо после логина в системе

Описание бага: При логине в системе пользователя всегда перенаправляет на главную страницу

Ожидаемое поведение: Перенаправление должно быть на страницу, с которой производился логин

Страница "Темы" (Topics)

As a User I want to be able add Topics and then assign Peoples to particular topics
Examples:

  • Rust
  • Type Script
  • AI

Should to be implemented:

  • DB entity
  • Page for List of topics

Персоны создаются без привязки к бренду

Описание бага: На данный момент можно создать персону без привязки к бренду

Ожидаемое поведение: Персона должна быть обязательно привязана к бренду

Шаги воспроизведения: На странице создания персоны не выберайте бренд и создайте её

Заменить надпись лейбы "ипэ"

Описание бага: сейчас в лейме paymentType при переводе на сокращенный русский пишется "ипэ".

Ожидаемое поведение: сменить "ипэ" на "ип"

Шаги воспроизведения:
Страница "Список Контента"

"Unarchive" button

Archived persons can be unarchived. After the unarchived status of the person changed to "active" and "UnarchivedAt" field seted by UTC datetime now

Related issues: #13 #4

Номер и дата договора

Добавить для Bill поля "ContractNumber" & "ContractDate"
При оплате контента наUI отображать инпуты для этих полей, если выбран тип оплаты "ИП"

Initiate project

Create an init structure of the project:

  • Create initial projects
    • initiate Namespaces
    • set .net core version
    • prepare three-layer architect (services, dal, blazor UI proj)
    • add a project for service tests
  • Push it to develop and master

"Archive" button

As the user of the system, I should be able to archive a person.

  • Archived person does not shown on "Person list" by default
    • Should be able new filter "status" with values: "active","archived", "all"
  • Archived person does not shown on the map

Сменить название сущности "Channel" на "Brand"

Описание бага: по факту, система оперирует не каналами, а целым брендом. Базовые сущности на данный момент привязаны к Каналам, но это нелогично, например, когда мы привязываем контент из телеграми или инсты или ведение мероприятия к каналу. Это активности уже не канального масштаба, а масштаба целого бренда.

Ожидаемое поведение: Необходимо заменить название на "Brand" в БД и везде по коду, включая ChannelId -> BrandId

Dashboard: общая информация

На главной странице необходимо красиво выводить статистическую информацию:

  • Кол-во персон (втч. не архивных)
  • Кол-во контента (по типам соцсетей)
  • Кол-во клиентов

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.