Compare commits

..

88 Commits

Author SHA1 Message Date
Levin Faber e44781b80d test Update package.json 7 years ago
Levin Faber fd651171f2
Updated gitlabci 7 years ago
Levin Faber 1b293543e5
WIP 7 years ago
Levin Faber f10e874188
Merge remote-tracking branch 'origin/develop' into f/react-grundstruktur 7 years ago
Levin Faber afa43826b4 Update .gitlab-ci.yml 7 years ago
Levin Faber 1f042a3b64
WIP 7 years ago
Levin Faber 582a5808cd
Merge remote-tracking branch 'origin/develop' into f/react-grundstruktur 7 years ago
Levin Faber 17d441ddb1 Merge branch 'f/gitlab-ci-pipelines-einrichten' into 'develop' 7 years ago
Levin Faber bafd52afb2 Update .gitlab-ci.yml 7 years ago
Levin Faber 7f5724a95f Update .gitlab-ci.yml 7 years ago
Levin Faber 0248913e81
WIP 7 years ago
Levin Faber 96bce4fc39
Added Router 7 years ago
Levin Faber 1d2d00d8f8
WIP 7 years ago
Tobi 939dfaafb4
Merge branch 'develop' of gitlab.com:fia72-dev/eva_lernsituation into develop 7 years ago
Tobi e957901597
🚧 EVA ERD Dateien hinzugefügt 7 years ago
Levin Faber 6fb075ecc0
Merge branch 'develop' of gitlab.com:fia72-dev/eva_lernsituation into develop 7 years ago
Levin Faber 60a1c01eb9
Added Paperprot 7 years ago
Tobi 7e23a93410
📝 Protokolle für 2019-05-15 7 years ago
Tobi 337b2f9e7a
Merge branch 'develop' of gitlab.com:fia72-dev/eva_lernsituation into develop 7 years ago
Tobi 18232ee6b3
📝 Protokolle für 2019-05-15 7 years ago
Levin Faber a890331609 Update .gitlab-ci.yml 7 years ago
Levin Faber 8d9e9e7a44 Merge branch 'f/1-frontend-react-initialisieren' into 'develop' 7 years ago
Kai Senkowski 6dc3854226 🔧 React app name changed 7 years ago
Levin Faber d121318f75
Renamed Dockerfile 7 years ago
Tobi 4536a4ef40 Merge branch 'f/2-backend-asp-net-core-initialisieren' into 'develop' 7 years ago
Tobi b94e0a3de7
🎉 EVABackend .NET Core Projekt initialisiert 7 years ago
Levin Faber b79e566d18 Merge branch 'f/gitlab-ci-pipelines-einrichten' into 'develop' 7 years ago
Levin Faber 02a5e125a2 Update .gitlab-ci.yml 7 years ago
Levin Faber ad6a2404d7 Update .gitlab-ci.yml 7 years ago
Levin Faber 233aa04817 Update .gitlab-ci.yml 7 years ago
Levin Faber 6e63b48163 Update .gitlab-ci.yml 7 years ago
Levin Faber 0b14603366 Update .gitlab-ci.yml 7 years ago
Levin Faber cd887b4fb6 Update .gitlab-ci.yml 7 years ago
Levin Faber 7d439075b6 Update .gitlab-ci.yml 7 years ago
Levin Faber 895a6376b7 Update .gitlab-ci.yml 7 years ago
Levin Faber cd5d32af4d Update .gitlab-ci.yml 7 years ago
Levin Faber 743e32885b Update .gitlab-ci.yml 7 years ago
Levin Faber e6aa36948f Update .gitlab-ci.yml 7 years ago
Levin Faber 786af31d9f
🚚 File permissions 7 years ago
Levin Faber 0eeaeb077d Update .gitlab-ci.yml, Docker/config/restart-host.sh files 7 years ago
Levin Faber b515e5a7a7 Update .gitlab-ci.yml 7 years ago
Levin Faber 93fd8d871e Update .gitlab-ci.yml, Docker/Dockerfile_FE_Host files 7 years ago
Levin Faber 1fde640178 Update .gitlab-ci.yml 7 years ago
Levin Faber f985a69de9 Update .gitlab-ci.yml 7 years ago
Levin Faber ba0ed4a900 Update .gitlab-ci.yml 7 years ago
Levin Faber 4d3422b39d Update .gitlab-ci.yml 7 years ago
Levin Faber 4ccc812f35 Update .gitlab-ci.yml 7 years ago
Levin Faber 3509439dfb Update .gitlab-ci.yml 7 years ago
Levin Faber 6fa231ac3c Update .gitlab-ci.yml 7 years ago
Levin Faber a6f323c8eb Update .gitlab-ci.yml 7 years ago
Levin Faber 479a4d2d81 Update .gitlab-ci.yml 7 years ago
Levin Faber 92bb8351dc Update .gitlab-ci.yml 7 years ago
Levin Faber ac1c31beb7 Update .gitlab-ci.yml 7 years ago
Levin Faber f777c10353 Update .gitlab-ci.yml 7 years ago
Levin Faber abcd2e95fd Update .gitlab-ci.yml 7 years ago
Levin Faber 3e34d3cf1a Update .gitlab-ci.yml 7 years ago
Levin Faber d0a85eb60c Update .gitlab-ci.yml 7 years ago
Levin Faber 2625465071 Update .gitlab-ci.yml 7 years ago
Levin Faber ff38e43576 Update .gitlab-ci.yml 7 years ago
Levin Faber bc4629ea67 Update .gitlab-ci.yml 7 years ago
Levin Faber ff4d67bfe1 Update .gitlab-ci.yml 7 years ago
Levin Faber 849140bd54 Update .gitlab-ci.yml 7 years ago
Levin Faber 1535bb0e21 Update .gitlab-ci.yml 7 years ago
Levin Faber 95ea0e935a Update .gitlab-ci.yml 7 years ago
Levin Faber 30929c60f7 Update .gitlab-ci.yml 7 years ago
Levin Faber f0014a083d 👷 Add new file 7 years ago
Levin Faber 23fb24972e Merge branch 'develop' into 'f/gitlab-ci-pipelines-einrichten' 7 years ago
Levin Faber 819eda375b Merge branch 'f/docker-fe' into 'develop' 7 years ago
Levin Faber e878d571ea
🐳 Added Dockerfile for Build 7 years ago
Levin Faber 63acad363a Merge branch 'f/1-frontend-react-initialisieren' into 'develop' 7 years ago
u14461 3d70291fa9 🎉 React App initialisiert 7 years ago
Levin Faber 6c3fc58051 📝 Update README.md 7 years ago
Levin Faber 49f8e987f7 📝 Update README.md 7 years ago
Tobi e9a84f69a4 Merge branch 'f/docker-fe' into 'develop' 7 years ago
Levin Faber 9f7ba498f5
🐳 Added Dockerfiles, FE Placeholder 7 years ago
Levin Faber 80f04bad40 📝 Update README.md 7 years ago
Levin Faber a60f4338ab 📝 Update README.md 7 years ago
Levin Faber bfe064c04a
Merge branch 'develop' of gitlab.com:fia72-dev/eva_lernsituation into develop 7 years ago
Levin Faber 64666e06eb
🚚 Moved Dokuments, added Frontend and Backend Folder 7 years ago
Tobi 7c66efedae
📝 Vorlage Protokoll angepasst 7 years ago
Tobi 99c0ad580f 📝 Rollenverteilung angepasst 7 years ago
Tobi bdb63ed920 📝 Namen der Teilnehmer korrigiert 7 years ago
Levin Faber 661be5e9b5
📝 Protocol and Roles 7 years ago
Levin Faber e06404fc30
📝 Protokoll Template 7 years ago
Levin Faber b54b4bf845
🚚 Added Folder 7 years ago
Levin Faber b59b103236
📝 Updated Folder structure 7 years ago
Levin Faber 3faa816ab5
📝 Updated Folder structure 7 years ago
Levin Faber 8422cd200f Update README.md 7 years ago
  1. 70
      .gitlab-ci.yml
  2. 0
      Backend/.gitkeep
  3. 9
      Backend/EVABackend/.dockerignore
  4. 348
      Backend/EVABackend/.gitignore
  5. 25
      Backend/EVABackend/EVABackend.sln
  6. 45
      Backend/EVABackend/EVABackend/Controllers/ValuesController.cs
  7. 20
      Backend/EVABackend/EVABackend/Dockerfile
  8. 20
      Backend/EVABackend/EVABackend/EVABackend.csproj
  9. 24
      Backend/EVABackend/EVABackend/Program.cs
  10. 38
      Backend/EVABackend/EVABackend/Properties/launchSettings.json
  11. 47
      Backend/EVABackend/EVABackend/Startup.cs
  12. 9
      Backend/EVABackend/EVABackend/appsettings.Development.json
  13. 8
      Backend/EVABackend/EVABackend/appsettings.json
  14. 15
      Docker/Dockerfile_FE_Builder.dockerfile
  15. 5
      Docker/Dockerfile_FE_Host.dockerfile
  16. 14
      Docker/config/nginx.conf
  17. 7
      Docker/config/restart-host.sh
  18. 23
      Frontend/.gitignore
  19. 0
      Frontend/.gitkeep
  20. 5
      Frontend/README.md
  21. 12
      Frontend/dist/index.html
  22. 13198
      Frontend/package-lock.json
  23. 35
      Frontend/package.json
  24. BIN
      Frontend/public/favicon.ico
  25. 18
      Frontend/public/index.html
  26. 15
      Frontend/public/manifest.json
  27. 24
      Frontend/src/components/App.js
  28. 47
      Frontend/src/components/Login.js
  29. 6
      Frontend/src/index.js
  30. 14
      Frontend/src/style/index.css
  31. 32
      README.md
  32. 0
      _Dokumente/Ausgangsmaterial/LS _MS_Ausgangslage.docx
  33. 0
      _Dokumente/Ausgangsmaterial/LS_MS_Aktivitaeten_und_Dokumente.pdf
  34. 0
      _Dokumente/Ausgangsmaterial/LS_MS_Ausgangslage.pdf
  35. 0
      _Dokumente/Ausgangsmaterial/LS_MS_Beispiel_Lastenheft.pdf
  36. 0
      _Dokumente/Ausgangsmaterial/LS_MS_Laufzettel_v2.pdf
  37. 0
      _Dokumente/Ausgangsmaterial/LS_MS_Material_Kundengespräch_01.docx
  38. 0
      _Dokumente/Ausgangsmaterial/LS_MS_Material_Kundengespräch_01.pdf
  39. 0
      _Dokumente/Ausgangsmaterial/LS_MS_PaperPrototyping.pdf
  40. 0
      _Dokumente/Ausgangsmaterial/LS_MS_Pflichtenheft.pdf
  41. 0
      _Dokumente/Ausgangsmaterial/LS_MS__Beispiel_Pflichtenheft.pdf
  42. 0
      _Dokumente/Ausgangsmaterial/P01_Lernsituation_MS_1.0_FIA7x.ppt
  43. 0
      _Dokumente/Ausgangsmaterial/Pflichtenheftvorlage.doc
  44. 0
      _Dokumente/Ausgangsmaterial/Pflichtenheftvorlage.pdf
  45. 0
      _Dokumente/Ausgangsmaterial/Projektmanagement Kompendium.pdf
  46. BIN
      _Dokumente/Ausgearbeitete Dokumente/EVA ERD Umletino.png
  47. 47
      _Dokumente/Ausgearbeitete Dokumente/EVA ERD Umletino.uxf
  48. BIN
      _Dokumente/Ausgearbeitete Dokumente/Papierprototyp_1.pdf
  49. BIN
      _Dokumente/Ausgearbeitete Dokumente/Papierprototyp_2.pdf
  50. 11
      _Dokumente/Ausgearbeitete Dokumente/Rollenverteilung.md
  51. 0
      _Dokumente/Protokolle/.gitkeep
  52. 21
      _Dokumente/Protokolle/2019-05-08_Protokoll.md
  53. 41
      _Dokumente/Protokolle/2019-05-15_Protokoll.md
  54. 14
      _Dokumente/Protokolle/Protokoll_Template.md

70
.gitlab-ci.yml

@ -0,0 +1,70 @@
stages:
- build_docker
- build_fe
build_frontend:
stage: build_fe
tags:
- docker
image: registry.gitlab.com/fia72-dev/eva_lernsituation/frontend-build
before_script:
- eval $(ssh-agent -s)
- ssh-add <(echo "${DEPLOY_ENV_KEY}")
- mkdir -p ~/.ssh
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
- cp -r Frontend/src/ /workdir/src/
- cp -r Frontend/public/ /workdir/public/
script:
- pwd
- ls -la
- cd /workdir
- npm run build
- ls -la /workdir/build
- ssh $DEPLOY_ENV_USER@$DEPLOY_ENV_TARGET "mkdir -p /home/$DEPLOY_ENV_USER/serve"
- ssh $DEPLOY_ENV_USER@$DEPLOY_ENV_TARGET "rm -rf /home/$DEPLOY_ENV_USER/serve/*"
- ssh $DEPLOY_ENV_USER@$DEPLOY_ENV_TARGET "mkdir -p /home/$DEPLOY_ENV_USER/serve/$CI_COMMIT_REF_NAME"
- rsync --progress -av -e ssh /workdir/build/* $DEPLOY_ENV_USER@$DEPLOY_ENV_TARGET:/home/$DEPLOY_ENV_USER/serve/
environment:
name: deploy
url: https://$DEPLOY_ENV_TARGET
build_docker_host:
stage: build_docker
tags:
- docker-builder
before_script:
- eval $(ssh-agent -s)
- ssh-add <(echo "${DEPLOY_ENV_KEY}")
- mkdir -p ~/.ssh
- echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
- docker info
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
script:
- docker build -f Docker/Dockerfile_FE_Host.dockerfile -t registry.gitlab.com/fia72-dev/eva_lernsituation/frontend-serve .
- docker push registry.gitlab.com/fia72-dev/eva_lernsituation/frontend-serve
- ls -la Docker/config/restart-host.sh
- rsync --progress -av -e ssh Docker/config/restart-host.sh $DEPLOY_ENV_USER@$DEPLOY_ENV_TARGET:/home/$DEPLOY_ENV_USER/restart-host.sh
- ssh $DEPLOY_ENV_USER@$DEPLOY_ENV_TARGET "./restart-host.sh"
only:
changes:
- Docker/Dockerfile_FE_Host.dockerfile
- Docker/config/*
build_docker_builder:
stage: build_docker
tags:
- docker-builder
before_script:
- docker info
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
script:
- docker build -f Docker/Dockerfile_FE_Builder.dockerfile -t registry.gitlab.com/fia72-dev/eva_lernsituation/frontend-build .
- docker push registry.gitlab.com/fia72-dev/eva_lernsituation/frontend-build
only:
changes:
- Docker/Dockerfile_FE_Builder.dockerfile
- Docker/config/*
- Frontend/package.json
- Frontend/package-lock.json

0
Backend/.gitkeep

9
Backend/EVABackend/.dockerignore

@ -0,0 +1,9 @@
.dockerignore
.env
.git
.gitignore
.vs
.vscode
*/bin
*/obj
**/.toolstarget

348
Backend/EVABackend/.gitignore vendored

@ -0,0 +1,348 @@
## 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
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Mono auto generated files
mono_crash.*
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# 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
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.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
# Visual Studio Trace Files
*.e2e
# 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
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# 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
# Note: 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
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/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
*.appx
*.appxbundle
*.appxupload
# 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
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# 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
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# 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/
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
# BeatPulse healthcheck temp database
healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/

25
Backend/EVABackend/EVABackend.sln

@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.28803.156
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EVABackend", "EVABackend\EVABackend.csproj", "{35629A48-394C-4EE6-B853-1B92641B9FED}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{35629A48-394C-4EE6-B853-1B92641B9FED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{35629A48-394C-4EE6-B853-1B92641B9FED}.Debug|Any CPU.Build.0 = Debug|Any CPU
{35629A48-394C-4EE6-B853-1B92641B9FED}.Release|Any CPU.ActiveCfg = Release|Any CPU
{35629A48-394C-4EE6-B853-1B92641B9FED}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {9D649B10-EA35-49B9-BCB5-A989D21D6832}
EndGlobalSection
EndGlobal

45
Backend/EVABackend/EVABackend/Controllers/ValuesController.cs

@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
namespace EVABackend.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
// GET api/values
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/values/5
[HttpGet("{id}")]
public ActionResult<string> Get(int id)
{
return "value";
}
// POST api/values
[HttpPost]
public void Post([FromBody] string value)
{
}
// PUT api/values/5
[HttpPut("{id}")]
public void Put(int id, [FromBody] string value)
{
}
// DELETE api/values/5
[HttpDelete("{id}")]
public void Delete(int id)
{
}
}
}

20
Backend/EVABackend/EVABackend/Dockerfile

@ -0,0 +1,20 @@
FROM mcr.microsoft.com/dotnet/core/aspnet:2.1-stretch-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:2.1-stretch AS build
WORKDIR /src
COPY ["EVABackend/EVABackend.csproj", "EVABackend/"]
RUN dotnet restore "EVABackend/EVABackend.csproj"
COPY . .
WORKDIR "/src/EVABackend"
RUN dotnet build "EVABackend.csproj" -c Release -o /app
FROM build AS publish
RUN dotnet publish "EVABackend.csproj" -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "EVABackend.dll"]

20
Backend/EVABackend/EVABackend/EVABackend.csproj

@ -0,0 +1,20 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
<UserSecretsId>81a3ba40-5295-4382-9a09-5339b5d22d08</UserSecretsId>
</PropertyGroup>
<ItemGroup>
<Folder Include="wwwroot\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="2.1.8" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.7.8" />
</ItemGroup>
</Project>

24
Backend/EVABackend/EVABackend/Program.cs

@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
namespace EVABackend
{
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
}
}

38
Backend/EVABackend/EVABackend/Properties/launchSettings.json

@ -0,0 +1,38 @@
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:50570",
"sslPort": 44374
}
},
"$schema": "http://json.schemastore.org/launchsettings.json",
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "api/values",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"EVABackend": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "api/values",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "https://localhost:5001;http://localhost:5000"
},
"Docker": {
"commandName": "Docker",
"launchBrowser": true,
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/api/values",
"httpPort": 50571,
"useSSL": true,
"sslPort": 44375
}
}
}

47
Backend/EVABackend/EVABackend/Startup.cs

@ -0,0 +1,47 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.HttpsPolicy;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
namespace EVABackend
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseMvc();
}
}
}

9
Backend/EVABackend/EVABackend/appsettings.Development.json

@ -0,0 +1,9 @@
{
"Logging": {
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
}
}

8
Backend/EVABackend/EVABackend/appsettings.json

@ -0,0 +1,8 @@
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*"
}

15
Docker/Dockerfile_FE_Builder.dockerfile

@ -0,0 +1,15 @@
# Tag: frontend-build
FROM node:10.8-stretch
RUN apt update
RUN apt install -y rsync
RUN mkdir -p /workdir
COPY Frontend/package.json /workdir/package.json
COPY Frontend/package-lock.json /workdir/package-lock.json
WORKDIR /workdir
RUN pwd && ls -la
run npm install

5
Docker/Dockerfile_FE_Host.dockerfile

@ -0,0 +1,5 @@
# Tag: frontend-serve
FROM nginx
COPY Docker/config/nginx.conf /etc/nginx/nginx.conf

14
Docker/config/nginx.conf

@ -0,0 +1,14 @@
events {
worker_connections 1024;
}
http {
server {
listen 80;
root /usr/share/nginx/html;
location / {
autoindex on;
}
}
}

7
Docker/config/restart-host.sh

@ -0,0 +1,7 @@
#! /bin/bash
docker login -u gitlab+deploy-token-66068 -p vD23SzzitUn8y8xGknKz registry.gitlab.com
docker stop eva_frontend_serve
docker rm eva_frontend_serve
docker rmi registry.gitlab.com/fia72-dev/eva_lernsituation/frontend-serve
docker run -d -p 8083:80 -v /home/gitlab/serve:/usr/share/nginx/html:ro --name "eva_frontend_serve" registry.gitlab.com/fia72-dev/eva_lernsituation/frontend-serve

23
Frontend/.gitignore vendored

@ -0,0 +1,23 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.js
# testing
/coverage
# production
/build
# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*

0
Frontend/.gitkeep

5
Frontend/README.md

@ -0,0 +1,5 @@
# React App für die EVA_Lernsituatuin
# Pakages
- Material UI

12
Frontend/dist/index.html vendored

@ -0,0 +1,12 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Temporäre Seite</title>
</head>
<body>
Hallo bitte geh weg.
</body>
</html>

13198
Frontend/package-lock.json generated

File diff suppressed because it is too large Load Diff

35
Frontend/package.json

@ -0,0 +1,35 @@
{
"name": "lernsituation",
"version": "0.1.0",
"private": true,
"repository": "https://gitlab.com/fia72-dev/eva_lernsituation",
"dependencies": {
"@material-ui/core": "^4.0.0-beta.2",
"react": "^16.8.6",
"react-dom": "^16.8.6",
"react-router-dom": "^5.0.0",
"react-scripts": "3.0.0",
"styled-components": "^4.2.0"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}

BIN
Frontend/public/favicon.ico

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

18
Frontend/public/index.html

@ -0,0 +1,18 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8" />
<link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico" />
<meta
name="viewport"
content="minimum-scale=1, initial-scale=1, width=device-width, shrink-to-fit=no"
/>
<meta name="theme-color" content="#000000" />
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
<title>Lernsituation</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
</body>
</html>

15
Frontend/public/manifest.json

@ -0,0 +1,15 @@
{
"short_name": "Lernsituation",
"name": "EVA_Lernsituation",
"icons": [
{
"src": "favicon.ico",
"sizes": "64x64 32x32 24x24 16x16",
"type": "image/x-icon"
}
],
"start_url": ".",
"display": "standalone",
"theme_color": "#000000",
"background_color": "#ffffff"
}

24
Frontend/src/components/App.js

@ -0,0 +1,24 @@
import React, { Component } from "react";
import CssBaseline from "@material-ui/core/CssBaseline";
import { BrowserRouter as Router, Route, Link } from "react-router-dom";
import Login from "./Login.js";
import { Box } from "@material-ui/core";
class App extends Component {
state = {};
render() {
return (
<Router>
<CssBaseline></CssBaseline>
<Box
flexDirection="column"
width="100%"
>
<Route path="/login" component={Login}/>
</Box>
</Router>);
}
}
export default App;

47
Frontend/src/components/Login.js

@ -0,0 +1,47 @@
import React, { Component } from "react";
import TextField from '@material-ui/core/TextField';
import { makeStyles } from '@material-ui/core/styles';
const useStyles = makeStyles(theme => ({
form: {
width: "90%",
}
}));
class Login extends Component {
state = {};
classes = useStyles();
render() {
return (
<form className={this.classes.form}>
<TextField
variant="outlined"
margin="normal"
required
fullWidth
id="email"
label="Email Address"
name="email"
autoComplete="email"
autoFocus
>
</TextField>
<TextField
type="password"
variant="outlined"
margin="normal"
required
fullWidth
id="password"
label="Password"
name="password"
autoComplete="password"
>
</TextField>
</form>
)
}
}
export default Login;

6
Frontend/src/index.js

@ -0,0 +1,6 @@
import React from "react";
import ReactDOM from "react-dom";
import "./style/index.css";
import App from "./components/App";
ReactDOM.render(<App />, document.getElementById("root"));

14
Frontend/src/style/index.css

@ -0,0 +1,14 @@
body {
margin: 0;
padding: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen",
"Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue",
sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
code {
font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New",
monospace;
}

32
README.md

@ -4,11 +4,39 @@
* Levin Faber
* Alexej Komnik
* Tobias Schifffarth
* Tobias Schiffarth
* Kai Senkowski
## Organisation
* ALLE Dokumente werden im [Gitlab](https://gitlab.com/fia72-dev/eva_lernsituation) abgelegt
* Alle Dokumente werden im [Gitlab](https://gitlab.com/fia72-dev/eva_lernsituation) abgelegt
* Kommunikation erfolgt über [Slack](https://dullidivision.slack.com)
* Es wird nach dem Wasserfallmodell entwickelt
## Kommunikationsplan
* Alle Dokumente werden im [Gitlab](https://gitlab.com/fia72-dev/eva_lernsituation) abgelegt
* Kommunikation erfolgt über [Slack](https://dullidivision.slack.com) oder mündlich in Meetings (es werden Protokolle erstellt)
* Das Arbeiten erfolgt in der Schule und bei Bedarf nach Absprache Remote
* Es wird pro Arbeitstag ein Meeting gehalten, in welchem der aktuelle Status besprochen wird ("Jour fixe")
* Alle offiziellen Kommuniktionen werden von einem am Anfang des Meetings bestimmten Mitarbeiter dokumentiert _(Ordner /Dokumente/Protokolle. Hier liegt eine Vorlage)_
* Die Einhaltung der Kommunikationsrichtlinien wird vom Teamleiter überwacht
## Konzepte
### Infrastruktur
* Alles wird in Dockercontainern deployed
* Server können von Tobi und Levin bereitgestellt werden
* Auf beiden ist eine Docker Installation vorhanden
* Das gebaute FE wird von einem NGINX geserved (registry.gitlab.com/fia72-dev/eva_lernsituation/frontend-serve)
* // Todo backend @Tobi
### Deployment
* Deployed wird über GitLab Pipelines

0
Dokumente_LS_Musikschule/LS _MS_Ausgangslage.docx → _Dokumente/Ausgangsmaterial/LS _MS_Ausgangslage.docx

0
Dokumente_LS_Musikschule/LS_MS_Aktivitaeten_und_Dokumente.pdf → _Dokumente/Ausgangsmaterial/LS_MS_Aktivitaeten_und_Dokumente.pdf

0
Dokumente_LS_Musikschule/LS_MS_Ausgangslage.pdf → _Dokumente/Ausgangsmaterial/LS_MS_Ausgangslage.pdf

0
Dokumente_LS_Musikschule/LS_MS_Beispiel_Lastenheft.pdf → _Dokumente/Ausgangsmaterial/LS_MS_Beispiel_Lastenheft.pdf

0
Dokumente_LS_Musikschule/LS_MS_Laufzettel_v2.pdf → _Dokumente/Ausgangsmaterial/LS_MS_Laufzettel_v2.pdf

0
Dokumente_LS_Musikschule/LS_MS_Material_Kundengespräch_01.docx → _Dokumente/Ausgangsmaterial/LS_MS_Material_Kundengespräch_01.docx

0
Dokumente_LS_Musikschule/LS_MS_Material_Kundengespräch_01.pdf → _Dokumente/Ausgangsmaterial/LS_MS_Material_Kundengespräch_01.pdf

0
Dokumente_LS_Musikschule/LS_MS_PaperPrototyping.pdf → _Dokumente/Ausgangsmaterial/LS_MS_PaperPrototyping.pdf

0
Dokumente_LS_Musikschule/LS_MS_Pflichtenheft.pdf → _Dokumente/Ausgangsmaterial/LS_MS_Pflichtenheft.pdf

0
Dokumente_LS_Musikschule/LS_MS__Beispiel_Pflichtenheft.pdf → _Dokumente/Ausgangsmaterial/LS_MS__Beispiel_Pflichtenheft.pdf

0
Dokumente_LS_Musikschule/P01_Lernsituation_MS_1.0_FIA7x.ppt → _Dokumente/Ausgangsmaterial/P01_Lernsituation_MS_1.0_FIA7x.ppt

0
Dokumente_LS_Musikschule/Pflichtenheftvorlage.doc → _Dokumente/Ausgangsmaterial/Pflichtenheftvorlage.doc

0
Dokumente_LS_Musikschule/Pflichtenheftvorlage.pdf → _Dokumente/Ausgangsmaterial/Pflichtenheftvorlage.pdf

0
Dokumente_LS_Musikschule/Projektmanagement Kompendium.pdf → _Dokumente/Ausgangsmaterial/Projektmanagement Kompendium.pdf

BIN
_Dokumente/Ausgearbeitete Dokumente/EVA ERD Umletino.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

47
_Dokumente/Ausgearbeitete Dokumente/EVA ERD Umletino.uxf

@ -0,0 +1,47 @@
<diagram program="umletino" version="14.3.0"><zoom_level>10</zoom_level><help_text></help_text><element><id>UMLClass</id><coordinates><x>5</x><y>30</y><w>240</w><h>190</h></coordinates><panel_attributes>Person
&lt;&lt;abstract&gt;&gt;
--
_Id_
Name, Vorname
Preisklasse
Geburtsdatum, Geburtsort
PLZ, Ort, Strasse, Hausnummer
Telefon, EMail
Bankname
BLZ
KontoNr</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>5</x><y>250</y><w>100</w><h>30</h></coordinates><panel_attributes>Schueler</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>145</x><y>250</y><w>100</w><h>50</h></coordinates><panel_attributes>Dozent
--
Stundensatz</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>184</x><y>210</y><w>30</w><h>60</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>10;10;10;40</additional_attributes></element><element><id>Relation</id><coordinates><x>44</x><y>210</y><w>30</w><h>60</h></coordinates><panel_attributes>lt=&lt;&lt;-</panel_attributes><additional_attributes>10;10;10;40</additional_attributes></element><element><id>UMLClass</id><coordinates><x>64</x><y>411</y><w>120</w><h>130</h></coordinates><panel_attributes>Kurs
--
_Id_
*Name*
*Preis*
Laufzeit
Kuendigungsfrist
Bestaetigt</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>514</x><y>321</y><w>100</w><h>80</h></coordinates><panel_attributes>Raum
--
_Nr_
Name
Belegt</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>344</x><y>411</y><w>100</w><h>120</h></coordinates><panel_attributes>Unterricht
--
_Id_
Name
Anfangszeit
Endzeit
</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>134</x><y>291</y><w>80</w><h>140</h></coordinates><panel_attributes>m1=1
m2=0..n</panel_attributes><additional_attributes>60;10;10;120</additional_attributes></element><element><id>Relation</id><coordinates><x>44</x><y>271</y><w>90</w><h>160</h></coordinates><panel_attributes>m1=0..n
m2=1..n</panel_attributes><additional_attributes>10;10;60;140</additional_attributes></element><element><id>Relation</id><coordinates><x>174</x><y>451</y><w>190</w><h>40</h></coordinates><panel_attributes>m1=1..n
m2=1</panel_attributes><additional_attributes>170;10;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>434</x><y>391</y><w>160</w><h>100</h></coordinates><panel_attributes>m1=1
m2=1..n</panel_attributes><additional_attributes>130;10;130;70;10;70</additional_attributes></element><element><id>UMLClass</id><coordinates><x>64</x><y>590</y><w>120</w><h>70</h></coordinates><panel_attributes>UnterrichtTyp
&lt;&lt;enum&gt;&gt;
--
Einzel
Gruppe</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>114</x><y>531</y><w>50</w><h>80</h></coordinates><panel_attributes>*Typ*</panel_attributes><additional_attributes>10;60;10;10</additional_attributes></element><element><id>UMLClass</id><coordinates><x>344</x><y>181</y><w>100</w><h>120</h></coordinates><panel_attributes>Instrument
&lt;&lt;enum&gt;&gt;
--
Klavier
Schlagzeug
Geige
Gitarre</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>434</x><y>241</y><w>160</w><h>100</h></coordinates><panel_attributes>m1=1..n
m2=1</panel_attributes><additional_attributes>10;10;130;10;130;80</additional_attributes></element><element><id>Relation</id><coordinates><x>234</x><y>271</y><w>130</w><h>40</h></coordinates><panel_attributes>m1=1..n
m2=0..n</panel_attributes><additional_attributes>110;10;10;10</additional_attributes></element></diagram>

BIN
_Dokumente/Ausgearbeitete Dokumente/Papierprototyp_1.pdf

Binary file not shown.

BIN
_Dokumente/Ausgearbeitete Dokumente/Papierprototyp_2.pdf

Binary file not shown.

11
_Dokumente/Ausgearbeitete Dokumente/Rollenverteilung.md

@ -0,0 +1,11 @@
# Rollenverteilung
* Teamleitung ( Levin, Alexej )
* Aufgbenverteilung
* Kommuniktion Organisieren (intern und mit Kunden)
* Probleme lösen (intern und extern)
* Übernimmt Controlling Aufgaben
* Prozessbeobachtung ( Tobi )
* Diverse Geschehen beobachten und chronologisch dokumentieren
* Entwickler ( alle )
* Entwicklung

0
_Dokumente/Protokolle/.gitkeep

21
_Dokumente/Protokolle/2019-05-08_Protokoll.md

@ -0,0 +1,21 @@
# 2019-05-08 Protokoll
_Teilnehmer: Levin Faber, Alexej Komnik, Tobias Schiffarth, Kai Senkowski_
_Ort: Schule_
## Agenda
* Rollenverteilung
* Kommunikationsplan besprechen
* Was ist unser erstes Todo
* Brainstroming
* Fragenkatalog erstellen
## Ergebnisse
* Im Vorlauf wurde ein Projektportfolio auf GitLab eingerichtet
* Ein Rollenplan wurde erstellt
* Der KP wurde besprochen
* Erstes ToDo ist: MindMap erstellen
## Resultierende Aufgaben
* Keine

41
_Dokumente/Protokolle/2019-05-15_Protokoll.md

@ -0,0 +1,41 @@
# 2019-05-15 Protokoll
_Teilnehmer: Levin Faber, Alexej Komnik, Tobias Schiffarth, Kai Senkowski_
_Ort: Schule_
## Agenda
* Papierprototyp
* Pflichtenheft
* ER-Diagram
* Endpoints für Kommunikation zwischen FE und BE
* Fragenkatalog erstellen
* Verwendete Techniken
* Programmiersprachen
* Frameworks
* Docker
* Datenbank
## Ergebnisse
* Verwendete Techniken
* Frontend
* UI Library "React" (Version 16.8.6)
* Designvorlage "Material UI" (Version 3)
* Backend
* C# mit ASP.NET Core WebAPI (Version 2.1)
* EntityFrameworkCore (Version 6)
* SQLite Datenbank für EntityFrameworkCore (Version 2.1)
* Infrastruktur
* Docker (Version 18.09.6)
* Codeverwaltung Gitlab (Gitlab Cloud)
### Fragenkatalog
* Öffnungszeiten
* Arbeitszeiten
* Donzenten anlegen
## Resultierende Aufgaben
|Aufgabe|Verantwortlicher|Erledigt|
|-|-|-|
|Papierprototyp erstellen und im nächsten Metting weiter besprechen|Kai, Levin||
|Erstellung ER-Diagram und im nächsten Meeting weiter besprechen|Alexej, Tobias||
|Erstellung Pflichtenheft und Definition der Endpoints nach Besprechung von Papierprototyp und ER-Diagram|||

14
_Dokumente/Protokolle/Protokoll_Template.md

@ -0,0 +1,14 @@
# 2019-xx-xx Protokoll
_Teilnehmer: Levin Faber, Alexej Komnik, Tobias Schiffarth, Kai Senkowski_
_Ort: Schule_
## Agenda
* Punkt 1
## Ergebnisse
* Punkt 1
## Resultierende Aufgaben
[-] Punkt 1
Loading…
Cancel
Save