Position: .NET Developer
Company: Pronko Inc.
Category: .NET
Experience: 1y

**Вимоги:**

— Досвід розробки сервісів від 2-х років на платформі .NET.— Розуміння мікросервісів, event-driven design.— Знання C#, up to .NET Core 2+— Впевнене розуміння та використання принципів OOP/OOD.— Розуміння RESTful принципів.— Розуміння SQL.— Розуміння  Entitty Framework.— Покриття функціоналу unit тестами— Досвід роботи з ASP.NET Core, EF Core.— Досвід роботи з RabbitMQ, Docker, Redis, WebSocket, PostgreSQL.— Розуміння Сlean Code/Architecture.

**Умови роботи:**
Ви можете знаходитись в будь якому місті України. Робота пропонуєтья віддалено, оплата погодинна в $ на картку. Англійська мова не обовязкова, вся команда украіно та російсько мовна. 
На початку співпраця буде permanent part-time. Далі можливо розглядати permanent full time. Hourly rate to be determined в процесі інтервью з урахуванням рівня та досвіду. 

Завдання:Розробити REST API системи збереження нотаток користувачами використовуючи .NET Core.

API повинне містити такі контролери:

аккаунтреєстрація: включає email, пароль, прізвище, ім’я; надсилати лист підтвердження email не потрібно; в результаті реєстрації користувачеві видається токен авторизації, з яким він може здійснювати авторизовані запитиавторизація: відбувається за допомогою email і пароля; в результаті авторизації користувачеві видається токен авторизації, з яким він може здійснювати авторизовані запитиотримання особистих даних користувача: email, прізвище, ім’яредагування особистих даних користувача: прізвище, ім’яредагування паролю;

нотаткастворення: назва, текстредагування: назва, текствидаленняотримання списку нотаток сторінками заданої величиниотримання нотатки за ІД

Дані аккаунтів та користувачів повинні зберігатись у БД. Вибір бази даних здійснюється на ваш розсуд. Базу даних необхідно підключити через EF Core.

Переконайтесь у правильності обмеження доступу до нотаток та даних аккаунтів (користувач не може бачити і змінювати нотатки та аккаунти інших користувачів).

Опублікувати результати тестового завдання в git репозиторії

Додаткові плюси (необов’язково):використання Swagger для опису REST APIнаписані тести до коду

**We are starting to develop SaaS software - CRM platform, for companies and their interaction with customers. This development should also include integration with other CRM platforms. Target audience - the United States and Western countries.**

** Requirements: **

- Experience in developing services from 2 years on the .NET platform.— Understanding of microservices, event-driven design.— Knowledge of C #, up to .NET Core 2 + - Confident understanding and use of OOP / OOD principles.— Understanding of RESTful principles.— Understanding SQL.— Understanding Entitty Framework.— Coverage of unit tests— Experience with ASP.NET Core, EF Core.— Experience with RabbitMQ, Docker, Redis, WebSocket, PostgreSQL.— Understanding Clean Code / Architecture.

**Working conditions:**
You can be in any city of Ukraine. Job offers remotely, hourly payment in $ per card. English is not required, the whole team is Ukrainian and Russian.
In the beginning, the cooperation will be permanent part-time. Then it is possible to consider permanent full time. Hourly rate to be determined during the interview, taking into account the level and experience.

** Typical task ** - The first typical task that will need to be done in case of a successful interview. Therefore, you can focus on assessing their capabilities.

Objective: To develop the REST API of the system for saving notes by users using .NET Core.

The API must contain the following controllers:

account registration: includes email, password, last name, first name; you do not need to send a confirmation email; as a result of registration the user is issued an authorization token with which he can make authorized requestsauthorization: occurs by email and password; As a result of authorization, the user is issued an authorization token, with which he can make authorized requests to receive personal data of the user: email, last name, name of personal data of the user: last name, first name of password;

note creation: title, text editing: title, text deleting receiving a list of notes by pages of a given size receiving a note by ID

Account and user data must be stored in the database. The choice of database is at your discretion. The database must be connected via EF Core.

Make sure that restrictions on access to notes and account data are correct (user cannot see and edit notes and accounts of other users).

Publish test results to the git repository
Additional benefits (optional): use Swagger to describe REST API written tests to code