Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Discussion] [Backend] How to actually set it up? #5

Open
alinkedd opened this issue Mar 17, 2024 · 17 comments
Open

[Discussion] [Backend] How to actually set it up? #5

alinkedd opened this issue Mar 17, 2024 · 17 comments

Comments

@alinkedd
Copy link

alinkedd commented Mar 17, 2024

The provided documentation is insufficient for assembling backend. As for now, it's more like looking package-by-package for a needle in a haystack, rather than following a structured, streamlined path. Additionally, it appears that the current batch of packages has NOT been tested in a clean environment before being uploaded.

UPD
According to Diia representatives, the current batch of BE packages is a snapshot of some (but not all) packages, which have also been stripped of some code for security reasons.


This topic is aimed at coming up with possible solutions for those trying to get it all together.
Please feel free to leave your setup problems, as well as link to related issues, PRs, comments, or add other useful information.

@alinkedd
Copy link
Author

alinkedd commented Mar 17, 2024

npm issues while building #2 (comment)

I trying to build source code and hit different kind of NPM issues.
For example npm/cli#5007

@kant2002
Copy link

Із того що я спостережую, то Дія веде усю розробку на Лінуксі, і потребує глобально установлених наступних тулів

  • protoc
  • eslint
  • prettier

також процес збірки залежить від ts-proto який не має зібраних windows бінарників, тому genproto пакет не функціональний і ламається + там npm root у башевому стилі використовується.

@kant2002
Copy link

kant2002 commented Mar 17, 2024

Зараз я намагаюся опублікувати пакети у іншому NPM скопі @kant2002-diia-inhouse, і для цього роблю форк кожного репозіторія, і маю гілку outhouse із локальними змінами. через те що я на Windows працюю, я не можу зібрати be-types бо пакет be-getproto лише сумісний із Лінукс/Мак де-факто

@alinkedd
Copy link
Author

alinkedd commented Mar 17, 2024

(WIP) List of packages/clients to bundle

Prerequisites: Node.js 18 + npm, protoc.
Currently, it seems that packages also require eslint, prettier, typescript (5.2.2) installed globally.

@kant2002
Copy link

kant2002 commented Mar 18, 2024

Зараз можно прубовати запустити be-documents-service

Для цього, або треба склонувати мій форк або якось запустити NPM пакет @kant2002-diia-inhouse/documents-service

якщо ви на вінді і склонували мій форк, також треба буде локально застосувати патч diia-open-source/be-genproto#4 інакше не буде працювати.

Також треба запустити HashiCorp Vault або щось що підтримує цей протокол.(це я погарячкував) Далі вже требе гратися, я так далеко не зайшов. Якщо у мене буде повна інструкція, я додам інформацю.

@kant2002
Copy link

kant2002 commented Mar 20, 2024

Тестове середовище як вказано у https://github.com/diia-open-source/diia-setup-howto/blob/main/backend/docker-compose.yml не працює із Mongo через дві проблеми

@kant2002
Copy link

diff --git a/backend/docker-compose.yml b/backend/docker-compose.yml
index a981aa1..acb73c0 100644
--- a/backend/docker-compose.yml
+++ b/backend/docker-compose.yml
@@ -45,6 +45,9 @@ services:
         "--replSet",
         "diia"
       ]
+    volumes:
+      - ./scripts/rs-init.sh:/scripts/rs-init.sh
+      - ./scripts/init.js:/scripts/init.js
   mongo2:
     container_name: mongo2
     image: mongo:5

rs.init.sh

#!/bin/bash

DELAY=25

mongo <<EOF
var config = {
    "_id": "diia",
    "version": 1,
    "members": [
        {
            "_id": 1,
            "host": "mongo1:27017",
            "priority": 2
        },
        {
            "_id": 2,
            "host": "mongo2:27017",
            "priority": 1
        },
        {
            "_id": 3,
            "host": "mongo3:27017",
            "priority": 1
        }
    ]
};
rs.initiate(config, { force: true });
EOF

echo "****** Waiting for ${DELAY} seconds for replicaset configuration to be applied ******"

sleep $DELAY

mongo < /scripts/init.js

init.js

rs.status();

@OleksandrKucherenko
Copy link

we can join our efforts in monorepo https://github.com/ArtfulBits/diia.monorepo

@kant2002
Copy link

Public Service Catalog також не може бути створено, через брак пакету "@diia-inhouse/user-service-client"
https://github.com/diia-open-source/be-public-service-catalog/blob/3e70df9fe7f918f17ffe6aa737d8261e9893a770/package.json#L78

@the-az-dev
Copy link

Мене от цікавить важливе питання чому саме всі ці пакети вони не змогли налаштувати для чистого форку і організувати нормальне налаштування для того самого новачка який цікавиться строгим Ентерпрайзом аби він зуміг без всяких проблем могли на локальній машині трішки підняти і погратись із кодом, бо для мене це все зараз лише експонат аніж просто засіб який ти можеш детально вивчити шляхом тестів чи просто налаштувати і підняти локально на чистому середовищі. Бо реально я ніч витратив аби +- щось налаштувати (дякуючи JavaScript Січ де на трансляції все це було зроблено перший початок, тільки вже потім мудрував із протобуферами та імплементацією інших частин). Реально без ГПТ + СтекОверфлоу тут наразі не налаштуєш бо дуже багато багів і помилок навіть при стабільній ноді 20.х.х і дуже багато компонентів зроблено аби було. Як і що до того це напевно або моїх знань недостатньо або там реально все доволі туго йде.

@the-az-dev
Copy link

Тестове середовище як вказано у https://github.com/diia-open-source/diia-setup-howto/blob/main/backend/docker-compose.yml не працює із Mongo через дві проблеми

Наскільки я бачив у коді, то бек дії має таку конфігурації тільки вона скоріш за все в ігнорі для репозиторія, але це лише мої здогадки бо зараз важко щось мені описати після 15-ти годинної терапії із цим бекендом. Хай там як наразі дуже багато доведеться писати руцями аби це все підняти на локальній машині і цього "дуже багато" реально багато.

@alinkedd
Copy link
Author

btw, setup stream by JavaScript Січ (@xanf) - https://youtu.be/Pe4N5ssNMTo (in Ukrainian)

@kant2002
Copy link

kant2002 commented Mar 26, 2024

замість @diia-inhouse/user-service-client можна юзати або @kant2002-diia-inhouse/user-service-client який побудований звідси https://github.com/kant2002/be-user-service-client Це дозволило запустити ще public-service-catalog

@kant2002
Copy link

@the-az-dev Чи тобі вдалося запустити якусь частину Дії? Бо у мене зараз усе окрім criminal-cert сервіса начебто піднято. Незважаючи, який підхід тобі більше до вподоби, мій, Олександра чи робити усе самотужки, ти можеш знайти нас у телезі https://t.me/+f6d5MCe-euthOTFi можливо там ми тобі швидше зможемо допомогти із стартом.

@the-az-dev
Copy link

@the-az-dev Чи тобі вдалося запустити якусь частину Дії? Бо у мене зараз усе окрім criminal-cert сервіса начебто піднято. Незважаючи, який підхід тобі більше до вподоби, мій, Олександра чи робити усе самотужки, ти можеш знайти нас у телезі https://t.me/+f6d5MCe-euthOTFi можливо там ми тобі швидше зможемо допомогти із стартом.

Я лише фокусувався на архітектурі, патернах і роботи авторизації, бо саме там для себе я відкрив нові речі. Доречі, дякую за інвайт в вашу групу, обовязково доєднаюсь, крім того я надіюсь, що Diia Center дозволить сформувати Open Source команду на базі досвідчених програмістів та програмістів ентузіастів, які зможуть елементарно робити взаємодії із шаблонами готово коду ну й робити адекватні рефактори коду, ну й яка буде підтримувати весь цей код як і бекенду так і мобільних апок і ця команда зможе спокійно робити PRи!)

@kant2002
Copy link

Ще дрібна глобальна залежність diia-open-source/be-gateway-service#4

@Mr-NumberOne
Copy link

Комусь вдалося налаштувати все середовище та фактично запустити службу в одному вікні?
Has anyone managed to setup the whole environment and actually run a service one windows?
@kant2002

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants