StreetCode
StreetCode copied to clipboard
Streetcode
This is a Back-end part of our Streetcode project. Front-end part: https://github.com/ita-social-projects/StreetCode_Client
Vision
The largest platform about the history of Ukraine, built in the space of cities.
Mission
To fill the gaps in the historical memory of Ukrainians.
Table of Contents
- Streetcode
- Table of Contents
- Installation
- Required to install
- Environment
- Clone
- Setup
- How to run local
- How to run Docker
- Usage
- How to work with swagger UI
- How to run tests
- How to Checkstyle
- Documentation
- Contributing
- Git flow
- Issue flow
- Team
- FAQ
- Support
- License
Installation
Required to install
- ASP.NET Core Runtime 6.0.12
- Microsoft SQL Server 2017+
- Nuke Build 6.2.1+
dotnet tool install Nuke.GlobalTool --global --version <VERSION_NUMBER>
Environment
environmental variables
ADMIN_PASSWORD
Clone
Clone this repo to your local machine using:
https://github.com/ita-social-projects/StreetCode
Or if your have an associated SSH key:
[email protected]:ita-social-projects/StreetCode.git
Setup
1. Change connection string
-
Go to
appsettings.Local.jsonin StreetCode.WebApi project and write your local database connection string in following format:Server={local_server_name};Database=StreetcodeDb;User Id={username};Password={password};MultipleActiveResultSets=true;TrustServerCertificate=true;
2. Set environment variables
-
You can set environment variable before seeding the database in
Program.csin StreetCode.WebApi project (replace{password}with your password):Environment.SetEnvironmentVariable("ADMIN_PASSWORD", "{password}"); -
Or by specifying in
launchSettings.jsonfile like:{ "profiles": { "Streetcode_Local": { "environmentVariables": { "ADMIN_PASSWORD": "password", } } } }
3. Add database seeding
-
Go to
Program.csin StreetCode.WebApi project and add the following code :await app.SeedDataAsync();
4. Create and seed local database
- Run project and make sure that database was created and filled with data
How to run local
Run the Streetcode project than open your browser and enter https://localhost:5001/swagger/index.html url. If you had this page already opened, just reload it.
How to connect to db locally
- launch SQL Server management Studio
- In the pop-up window:
- enter "localhost" as the server name;
- select "windows authentication" as authentication mechanism;
- After the connection has been established, right-click on the server (the first line with the icon), on the left-hand side of the UI
- In the the appeared window find and click on "properties"
- In the properties section, select "security" page
- Make sure that "Server authentication" radio-button is set to "SQL Server and Windows Authentication mode"
- Click "Ok"
- Then again, on the left-hand side of the UI find folder entitled "Security", and expand it
- In unrolled list of options find folder "Logins", and expand it
- At this point, you should have "sa" as the last option. If for some reason you do not see it, please refer to https://stackoverflow.com/questions/35753254/why-login-without-rights-can-see-sa-login
- Right-click on the "sa" item, select "properties"
- Change password to the default system one - "Admin@1234". Don't forget to confirm it afterwards
- On the left-hand side select "Status" page, and set "Login" radio-button to "Enabled"
- Click "Ok"
- Right click on "localhost" server on the left-hand side of the UI and click "Restart"
Now you can connect to your localhost instance with login (sa) and password (Admin@1234)!
Troubleshooting
-
If you encounter an unhandled
Microsoft.Data.SqlClient.SqlException: 'A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - The certificate chain was issued by an authority that is not trusted.)'while seeding the DB check if you have theTrustServerCertificate=true;parameter in your connection string and add it if you don't. -
If you encounter an unhandled
System.IO.DirectoryNotFoundExceptionwhile seeding the DB try to specify relative paths inSeedingLocalExtension.cstoimages.jsonandaudios.jsonin DAL or Streetcode.XIntegrationTest projects like:../Streetcode.DAL/InitialData/images.json ../Streetcode.DAL/InitialData/audios.jsonor
../Streetcode.XIntegrationTest/TestData/InitialData/images.json ../Streetcode.XIntegrationTest/TestData/InitialData/audios.jsonIf exception is still present specify the absolute paths.
How to run Docker
- In the "build" project, find the "Targets" folder
- In the appeared list of classes, find and click on "SetupPublicBuild.cs"
- Open the command prompt/PowerShell/linux terminal, go inside of "/Streetcode" directory, and start the "SetupDocker" Target.
cd ./Streetcode
nuke SetupDocker
After waiting for target completion, you should find that the image and running containers for back-end, front-end, db and redis have been successfully created.
NOTE: If order to delete newly created images/containers/volumes, you can utilize the "CleanDocker" Target.
cd ./Streetcode
nuke CleanDocker
That will delete all unnecessary docker-atoms for you.
Usage
How to work with swagger UI
Run the Streetcode project than open your browser and enter https://localhost:5001/swagger/index.html url. If you had this page already opened, just reload it.
How to run API without swagger UI
Run the Streetcode project in any other profile but "Local" and enter http://localhost:5000. Now, you are free to test API-endpoints with Postman or any other tool.
How to run tests
How to Checkstyle
Documentation
Learn more about our documentation here.
Contributing
Gitflow
Gitflow is a lightweight, branch-based workflow.
Gitflow is an alternative Git branching model that involves the use of feature branches and multiple primary branches.
Step 1
- First step is checkout to
developerbranch and pull the recent changes.
Step 2
- 🍴 Fork this repo from
developerbranch and name it! A short, descriptive branch name enables your collaborators to see ongoing work at a glance. For example,increase-test-timeoutoradd-code-of-conduct.
Step 3
- 🔨 On your branch, make ANY reasonable & desired changes to the repository.
Step 4
- :chart_with_upwards_trend: Commit and push your changes to your branch.
Give each commit a descriptive message to help you and future contributors understand what changes the commit contains.
For example,
fix typoorincrease rate limit. Note: you don't need to commit every line of your code in separate commits.
Step 5
- Before creating pull request you need to check the
developerbranch state! To avoid conflicts, you should mergedeveloperbranch to your local branch! And resolve your local conflicts. Mini manual: checkout to your local branch and write in consolegit merge developer.
Step 6
- 🔃 Create a new pull request using this link.
Step 7
- :raising_hand: Assign reviewers! Reviewers should leave questions, comments, and suggestions. After receiving comments, improve the code. Get Approved status on the request and be satisfied with it!
Step 8
- :tada: After 3 approved reviews, merge your pull request with
developerbranch! Also, it is important to wait for your scrum master to approve your changes. If there are some conflicts, resolve them, again.
Step 9
- :scissors: Delete redundant branch. Done!
Hotfixes
Oops, some fixed needs to be done immediately? Use this guide for Hotfixes!
Some fixes will be needed due to the nature of Gitflow. You would have to do a 'hotfix' or something outside of the normal process, but it's simply part of our normal process.
Step 1
- :fire: To implement an urgent change, a Hotfix branch is created off the
developerbranch to test and implement the fix.
Step 2
- :dancer: Once it’s complete, the Hotfix is merged with the
developerbranch.
Issue flow
Team
FAQ
- Сan't install .NET Core 6.0.0+ in Visual Studio?
- Try to install Visual Studio 2022
Support
Reach out to us at one of the following places!
- Telegram at
Iryna Zavushchak
License
- MIT license
- Copyright 2022 © SoftServe IT Academy.

