Witam 
Potrzebuję napisać system do składania i obsługi zamówień. Problem polega na tym, że chciałbym aby z wielu stron(aplikacji) można było składać zamówienia wraz z płatnościami do jednego systemu.
Serwer zapewne oprę o Grape i RESTful api, natomiast zastanawiam się nad klientami. Czy dobrym rozwiązaniem było by pisać klienta również w Railsach? Jak wtedy rozwiązać kwestię rejestracji, logowania (OAuth?), składania zamówień, zarządania zamówieniami (czy https://github.com/rails/activeresource był by tu odpowiedni?).
Najbardziej zależy mi na podpowiedziach osób które już coś podobnego pisały, jakieś dobre wskazówki, problemy które mogą wyjść w trakcie 
Pozdrawiam 
Nie wiem jakie dokładnie zamówienia chcesz obsługiwać, w przypadku w miarę standardowych być może warto rozważyć oparcie całości systemu na Spree (https://github.com/spree/spree) dostajesz wtedy “za darmo” panel do zarządzania całym systemem (który oczywiście musiałbyś nieco przystosować do swoich potrzeb), oraz udokumentowane API (https://guides.spreecommerce.com/api/) dla integracji z systemem z zewnątrz. Zaletą jest z pewnością to że korzystasz z popularnego, przetestowanego systemu, więc odchodzi bardzo dużo różnych problemów które pojawią się pisząc od zera.
Jeżeli z jakiegoś powodu nie możesz tak zrobić to pozostaje opcja druga, czyli napisanie wszystkiego samemu. Dzieląc się własnymi doświadczeniami mogę powiedzieć że:
- warto zapewnić możliwość rozbudowy (polecam: https://www.toptal.com/ruby-on-rails/rails-engines-in-the-wild-real-world-examples-of-rails-engines-in-action), czyli nie pisać monolitycznej aplikacji bo później ciężko coś z nią zrobić
- zastanowić się czy Railsowy frontend nada się dla systemu, jeżeli ma być dużo elementów interaktywnych to być może lepiej napisać aplikację w Angularze, lub Reakcie (wybrałem tą drugą opcję)
- obsłużyć mailing przez zewnętrzny serwis, dzięki temu nie będzie ewentualnych problemów z tym związanych (polecam Mailgun http://www.mailgun.com/ i https://github.com/jorgemanrubia/mailgun_rails)
- logowanie i rejestracja zawsze są problematyczne, nie widzę opcji żeby mogło to być w pełni bezpieczne bez SSL’a, pomocny może być gem https://github.com/lynndylanhurley/devise_token_auth, chociaż bardziej “standardowa” jest implementacja JWT np. https://github.com/nsarno/knock
Może teraz krótko co napisałem (w czym mogę pomóc).
Aplikacja do obsługi zamówień (konkretnie wycinania płyt, a więc każde zamówienie składa się z wielu parametryzowanych elementów) z backendem w Railsach (oparte na Rails API https://github.com/rails-api/rails-api i https://github.com/rails-api/active_model_serializers), a frontendem w ReactJS (w formie SPA). Jeżeli chodzi o React’a to polecam zapoznanie się z Redux’em (https://github.com/reactjs/react-redux), czyli React + Flux.
1 Like
Wielkie dzieki za tak kompleksową odpowiedz
Aplikacja ktora pisze rowniez opiera sie o sektor usługowo-handlowy. Mam jeszcze pytanie, czy obslugiwales platnosci internetowe w ReactJS? I ew. jak to wygladało ?
Płatności nie obsługiwałem, ale wydaje mi się że nie powinno być z tym problemu. Jeżeli będziesz w stanie generować zapytania do swojego API to i z API płatności nie powinno być problemów. Do tworzenia requestów w JS to polecam superagent. Alternatywnie (z tego co wiem) większość serwisów płatności umożliwia przetwarzanie płatności na zasadzie przesyłania zwykłego formularza z danymi.