Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
de56170
Initial folder structure, intial README
Jul 25, 2017
7d6b8d8
Add .NET gitignore
Jul 25, 2017
1641cd2
Initial solution structure. Add WebApi and Landing projects
Jul 25, 2017
17a0af7
Initial implementation of basic mongodb document service
Jul 25, 2017
a28727b
(WIP) IMplementing MongoDb data service and JWT authentication
Jul 26, 2017
eb0aa9e
Update README
Jul 26, 2017
67fef42
fix readme
Jul 26, 2017
25b34b0
Implement MongoDb repository, implement basic UserService
Jul 26, 2017
e3ef827
Add JWT authentication and issuing tokens
Jul 26, 2017
cb67de3
JWT authentication implemented
Jul 26, 2017
95f2001
Converts landing to MVC
Jul 30, 2017
831057d
(WIP) Implement registration and login on landing.
Aug 1, 2017
66645ee
Handle errors when signing in
Aug 1, 2017
d9d129c
Complete login/register/logout functionality
Aug 2, 2017
40f39ae
Add base api implementation to access Web API
Aug 2, 2017
f272fa5
(WIP) Update README, start describing projects configurations and dep…
Aug 2, 2017
de360ff
Fix layout, Cors configuration, enable mongo connection ssl, cleanup
Aug 2, 2017
cc57cb8
(WIP) Cleanup Readme and add Configuration and Deployment section
Aug 3, 2017
e6a9b90
Web Api configuration and deployment in README
Aug 3, 2017
123832a
Landing configuration and deployment, add Bundler and Minifier
Aug 3, 2017
92d9d59
Implement Mailgun mailer, start implementing Azure function app maile…
Aug 4, 2017
4d526a8
Add func app mailer, update in-app mailer
Aug 5, 2017
90d715e
Send message to queue to trigger azure func app mail send, send from …
Aug 5, 2017
b69bb11
API auth controller reset password actions
Aug 7, 2017
58e9fb3
Add tokent provider for reset token generation, validate forgot passw…
Aug 7, 2017
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
289 changes: 289 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,290 @@
node_modules

## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates

# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/

# Visual Studio 2015 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

# NUNIT
*.VisualState.xml
TestResult.xml

# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c

# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
**/Properties/launchSettings.json

*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc

# Chutzpah Test files
_Chutzpah*

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb

# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap

# TFS 2012 Local Workspace
$tf/

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user

# JustCode is a .NET coding add-in
.JustCode

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# Visual Studio code coverage results
*.coverage
*.coveragexml

# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*

# MightyMoose
*.mm.*
AutoTest.Net/

# Web workbench (sass)
.sass-cache/

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj

# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/

# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets

# Microsoft Azure Build Output
csx/
*.build.csdef

# Microsoft Azure Emulator
ecf/
rcf/

# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt

# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/

# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs

# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm

# SQL Server files
*.mdf
*.ldf
*.ndf

# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings

# Microsoft Fakes
FakesAssemblies/

# GhostDoc plugin setting file
*.GhostDoc.xml

# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/

# Typescript v1 declaration files
typings/

# Visual Studio 6 build log
*.plg

# Visual Studio 6 workspace options file
*.opt

# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw

# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions

# Paket dependency manager
.paket/paket.exe
paket-files/

# FAKE - F# Make
.fake/

# JetBrains Rider
.idea/
*.sln.iml

# CodeRush
.cr/

# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc

# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config

# Telerik's JustMock configuration file
*.jmconfig

# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
91 changes: 91 additions & 0 deletions dotnet/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
# Paralect .NET Service Stack

## Technology Stack

To make collaboration simpler and more efficient we will focus around very specific and concise technology stack, which includes following:

1. .NET Core
2. MongoDB, PostgreSQL

### .NET Service Stack Solutions Ideas

#### Priority tasks
|Priority|Description|
|:--:|:----|
|1|JWT authentication (full authentication workflow in Web Api (registration, login, forgot password)|
|2|Landing page (authentication and foundation for working with Web Api)|
|3|MongoDb data service|
|4|DocumentDb data service|

#### Starter apps & common REST resources

|Name|Status|Description|
|:--:|:----:|:----------|
|Landing|idea|Sample landing web site with account pages (Signup, Signin, Sign out, Forgot password, confirmations)|
|.NET Core Web Api starter|idea|Simple API starter that already have logging, connection to databases (DocumentDb or MongoDB in Azure Cosmos DB) and sample resource implementation|

### Solution Structure

|Project|Description|
|:--:|:----|
|Ceres.Data|This project contains interfaces for document repository and entites. As well it contains entities implementations. All entites should implement IEntity interface in order to be used with document repository implementations.|
|Ceres.Data.MongoDb| Implementation of MongoDb document repository.|
|Ceres.Landing| Landing site converted to .NET Core MVC application. Contains landing page itself (with free Boostrap theme), login/register pages and App controller (and page) as foundation for SPA.|
|Ceres.WebApi| .NET Core Web Api. Issues and validates JWT tokens for authentication. Current implementation uses MongoDb user manager (and user store), and will be updated to support DocumentDb user manager and user store.|
|Ceres.Services| Will contain implementations of data services.|

### Build and develop
[Visual Studio 2017 download](https://www.visualstudio.com/downloads/)

### Configuration and deployment

#### MongoDb

##### Azure setup
1. In Azure portal add new service -> Databases -> Azure Cosmos DB
2. Enter desired account ID
3. Select MongoDB in API dropdown
4. Select subscription, resource group and location
5. Click 'Create' and wait for database provisioning to complete
6. In resources list select created database and go to Settings -> Connection Strings to find connection info

##### Local setup
[Installation instructions](https://docs.mongodb.com/manual/tutorial/install-mongodb-on-windows/)

#### Web Api
1. In Azure portal add new service -> Web + Mobile -> Web App
2. Enter App name, select subscription and resource group
3. Select or create App service plan and location
4. Click 'Create' and wait for App provisioning to complete
5. In Web Api appsettings.json under CorsSettings set allowed origins URLs (URL can be found in Azure portal in web app/web site overview)
6. In Web Api appsettings.json under MongoDbConfiguration set MongoDB connection string (see MongoDb configuration section) and database name
7. Right-click on Ceres.WebApi project -> Publish
8. Select 'Microsoft Azure App Service'
9. Sign in to your Microsoft account
10. Click 'Change Type' and select 'API App'
11. Select subscription.
12. Select existing resource group or click 'New' and enter resource group name.
13. Select existing App service plan or click 'New' and create new plan.
14. Publish application
15. Verify application deployed correctly
16. Publish profile will be created under project Properties -> PublishProfiles and can be used for future deployments

#### Landing
1. 1. In Azure portal add new service -> Web + Mobile -> Web App
2. Enter App name, select subscription and resource group
3. Select or create App service plan and location
4. Click 'Create' and wait for App provisioning to complete
5. In Landing -> wwwroot -> js -> api -> base.js set Web Api address (in form like [http://localhost:34290/api/](http://localhost:34290/api/))
6. Right-click on Ceres.WebApi project -> Publish
7. Select 'Microsoft Azure App Service'
8. Sign in to your Microsoft account
9. Click 'Change Type' and select 'Web App'
10. Select subscription.
11. Select existing resource group or click 'New' and enter resource group name.
12. Select existing App service plan or click 'New' and create new plan.
13. Publish application
14. Verify application deployed correctly
15. Publish profile will be created under project Properties -> PublishProfiles and can be used for future deployments

#### Ceres.Data: Entities and document repositories implementation
TODO
Loading