aboutsummaryrefslogtreecommitdiffstats
path: root/code
diff options
context:
space:
mode:
authorivarlovlie <git@ivarlovlie.no>2022-11-14 07:50:31 +0100
committerivarlovlie <git@ivarlovlie.no>2022-11-14 07:50:31 +0100
commite60703aadca7d423c0fbfb189d5ef439fc1df072 (patch)
tree10ae5d3910c171918b7c2c6a8ddf77a6b3700513 /code
downloadstorage-e60703aadca7d423c0fbfb189d5ef439fc1df072.tar.xz
storage-e60703aadca7d423c0fbfb189d5ef439fc1df072.zip
feat: Initial commit
Diffstat (limited to 'code')
-rw-r--r--code/api/I2R.Storage.Api.csproj14
-rw-r--r--code/api/Program.cs20
-rw-r--r--code/api/Properties/launchSettings.json25
-rw-r--r--code/app-ios/Storage.xcodeproj/project.pbxproj344
-rw-r--r--code/app-ios/Storage.xcodeproj/project.xcworkspace/contents.xcworkspacedata7
-rw-r--r--code/app-ios/Storage.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist8
-rw-r--r--code/app-ios/Storage/Assets.xcassets/AccentColor.colorset/Contents.json11
-rw-r--r--code/app-ios/Storage/Assets.xcassets/AppIcon.appiconset/Contents.json13
-rw-r--r--code/app-ios/Storage/Assets.xcassets/Contents.json6
-rw-r--r--code/app-ios/Storage/ContentView.swift25
-rw-r--r--code/app-ios/Storage/Preview Content/Preview Assets.xcassets/Contents.json6
-rw-r--r--code/app-ios/Storage/StorageApp.swift17
-rw-r--r--code/app-web/package.json25
-rw-r--r--code/app-web/playwright.config.ts10
-rw-r--r--code/app-web/src/app.d.ts9
-rw-r--r--code/app-web/src/app.html12
-rw-r--r--code/app-web/src/routes/+page.svelte2
-rw-r--r--code/app-web/static/favicon.pngbin0 -> 1571 bytes
-rw-r--r--code/app-web/svelte.config.js15
-rw-r--r--code/app-web/tests/test.ts6
-rw-r--r--code/app-web/tsconfig.json17
-rw-r--r--code/app-web/vite.config.ts8
22 files changed, 600 insertions, 0 deletions
diff --git a/code/api/I2R.Storage.Api.csproj b/code/api/I2R.Storage.Api.csproj
new file mode 100644
index 0000000..ce90fce
--- /dev/null
+++ b/code/api/I2R.Storage.Api.csproj
@@ -0,0 +1,14 @@
+<Project Sdk="Microsoft.NET.Sdk.Web">
+
+ <PropertyGroup>
+ <TargetFramework>net7.0</TargetFramework>
+ <Nullable>enable</Nullable>
+ <ImplicitUsings>enable</ImplicitUsings>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="7.0.0" />
+ <PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
+ </ItemGroup>
+
+</Project>
diff --git a/code/api/Program.cs b/code/api/Program.cs
new file mode 100644
index 0000000..1b0b1b5
--- /dev/null
+++ b/code/api/Program.cs
@@ -0,0 +1,20 @@
+var builder = WebApplication.CreateBuilder(args);
+
+builder.Services.AddControllers();
+builder.Services.AddEndpointsApiExplorer();
+builder.Services.AddSwaggerGen();
+
+var app = builder.Build();
+
+if (app.Environment.IsDevelopment())
+{
+ app.UseSwagger();
+ app.UseSwaggerUI();
+}
+
+
+app.UseAuthorization();
+
+app.MapControllers();
+
+app.Run();
diff --git a/code/api/Properties/launchSettings.json b/code/api/Properties/launchSettings.json
new file mode 100644
index 0000000..778fa45
--- /dev/null
+++ b/code/api/Properties/launchSettings.json
@@ -0,0 +1,25 @@
+{
+ "$schema": "https://json.schemastore.org/launchsettings.json",
+ "profiles": {
+ "http": {
+ "commandName": "Project",
+ "dotnetRunMessages": true,
+ "launchBrowser": false,
+ "launchUrl": "swagger",
+ "applicationUrl": "http://localhost:5068",
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ }
+ },
+ "https": {
+ "commandName": "Project",
+ "dotnetRunMessages": true,
+ "launchBrowser": false,
+ "launchUrl": "swagger",
+ "applicationUrl": "https://localhost:7291;http://localhost:5068",
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ }
+ },
+ }
+}
diff --git a/code/app-ios/Storage.xcodeproj/project.pbxproj b/code/app-ios/Storage.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..f5852fe
--- /dev/null
+++ b/code/app-ios/Storage.xcodeproj/project.pbxproj
@@ -0,0 +1,344 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 56;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 1B6019A729221309001104A5 /* StorageApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B6019A629221309001104A5 /* StorageApp.swift */; };
+ 1B6019A929221309001104A5 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B6019A829221309001104A5 /* ContentView.swift */; };
+ 1B6019AB2922130A001104A5 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1B6019AA2922130A001104A5 /* Assets.xcassets */; };
+ 1B6019AE2922130A001104A5 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1B6019AD2922130A001104A5 /* Preview Assets.xcassets */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ 1B6019A329221309001104A5 /* Storage.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Storage.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 1B6019A629221309001104A5 /* StorageApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StorageApp.swift; sourceTree = "<group>"; };
+ 1B6019A829221309001104A5 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
+ 1B6019AA2922130A001104A5 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
+ 1B6019AD2922130A001104A5 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 1B6019A029221309001104A5 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 1B60199A29221309001104A5 = {
+ isa = PBXGroup;
+ children = (
+ 1B6019A529221309001104A5 /* Storage */,
+ 1B6019A429221309001104A5 /* Products */,
+ );
+ sourceTree = "<group>";
+ };
+ 1B6019A429221309001104A5 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 1B6019A329221309001104A5 /* Storage.app */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+ 1B6019A529221309001104A5 /* Storage */ = {
+ isa = PBXGroup;
+ children = (
+ 1B6019A629221309001104A5 /* StorageApp.swift */,
+ 1B6019A829221309001104A5 /* ContentView.swift */,
+ 1B6019AA2922130A001104A5 /* Assets.xcassets */,
+ 1B6019AC2922130A001104A5 /* Preview Content */,
+ );
+ path = Storage;
+ sourceTree = "<group>";
+ };
+ 1B6019AC2922130A001104A5 /* Preview Content */ = {
+ isa = PBXGroup;
+ children = (
+ 1B6019AD2922130A001104A5 /* Preview Assets.xcassets */,
+ );
+ path = "Preview Content";
+ sourceTree = "<group>";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 1B6019A229221309001104A5 /* Storage */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 1B6019B12922130A001104A5 /* Build configuration list for PBXNativeTarget "Storage" */;
+ buildPhases = (
+ 1B60199F29221309001104A5 /* Sources */,
+ 1B6019A029221309001104A5 /* Frameworks */,
+ 1B6019A129221309001104A5 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = Storage;
+ productName = Storage;
+ productReference = 1B6019A329221309001104A5 /* Storage.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 1B60199B29221309001104A5 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ BuildIndependentTargetsInParallel = 1;
+ LastSwiftUpdateCheck = 1410;
+ LastUpgradeCheck = 1410;
+ TargetAttributes = {
+ 1B6019A229221309001104A5 = {
+ CreatedOnToolsVersion = 14.1;
+ };
+ };
+ };
+ buildConfigurationList = 1B60199E29221309001104A5 /* Build configuration list for PBXProject "Storage" */;
+ compatibilityVersion = "Xcode 14.0";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 1B60199A29221309001104A5;
+ productRefGroup = 1B6019A429221309001104A5 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 1B6019A229221309001104A5 /* Storage */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 1B6019A129221309001104A5 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 1B6019AE2922130A001104A5 /* Preview Assets.xcassets in Resources */,
+ 1B6019AB2922130A001104A5 /* Assets.xcassets in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 1B60199F29221309001104A5 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 1B6019A929221309001104A5 /* ContentView.swift in Sources */,
+ 1B6019A729221309001104A5 /* StorageApp.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ 1B6019AF2922130A001104A5 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 16.1;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ };
+ name = Debug;
+ };
+ 1B6019B02922130A001104A5 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 16.1;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 1B6019B22922130A001104A5 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ DEVELOPMENT_ASSET_PATHS = "\"Storage/Preview Content\"";
+ DEVELOPMENT_TEAM = YZ2X3ZWRA9;
+ ENABLE_PREVIEWS = YES;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
+ INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
+ INFOPLIST_KEY_UILaunchScreen_Generation = YES;
+ INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
+ INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = com.i2r.Storage;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ 1B6019B32922130A001104A5 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ DEVELOPMENT_ASSET_PATHS = "\"Storage/Preview Content\"";
+ DEVELOPMENT_TEAM = YZ2X3ZWRA9;
+ ENABLE_PREVIEWS = YES;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
+ INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
+ INFOPLIST_KEY_UILaunchScreen_Generation = YES;
+ INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
+ INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = com.i2r.Storage;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 1B60199E29221309001104A5 /* Build configuration list for PBXProject "Storage" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 1B6019AF2922130A001104A5 /* Debug */,
+ 1B6019B02922130A001104A5 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 1B6019B12922130A001104A5 /* Build configuration list for PBXNativeTarget "Storage" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 1B6019B22922130A001104A5 /* Debug */,
+ 1B6019B32922130A001104A5 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 1B60199B29221309001104A5 /* Project object */;
+}
diff --git a/code/app-ios/Storage.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/code/app-ios/Storage.xcodeproj/project.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..919434a
--- /dev/null
+++ b/code/app-ios/Storage.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Workspace
+ version = "1.0">
+ <FileRef
+ location = "self:">
+ </FileRef>
+</Workspace>
diff --git a/code/app-ios/Storage.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/code/app-ios/Storage.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 0000000..18d9810
--- /dev/null
+++ b/code/app-ios/Storage.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>IDEDidComputeMac32BitWarning</key>
+ <true/>
+</dict>
+</plist>
diff --git a/code/app-ios/Storage/Assets.xcassets/AccentColor.colorset/Contents.json b/code/app-ios/Storage/Assets.xcassets/AccentColor.colorset/Contents.json
new file mode 100644
index 0000000..eb87897
--- /dev/null
+++ b/code/app-ios/Storage/Assets.xcassets/AccentColor.colorset/Contents.json
@@ -0,0 +1,11 @@
+{
+ "colors" : [
+ {
+ "idiom" : "universal"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/code/app-ios/Storage/Assets.xcassets/AppIcon.appiconset/Contents.json b/code/app-ios/Storage/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000..13613e3
--- /dev/null
+++ b/code/app-ios/Storage/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,13 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "platform" : "ios",
+ "size" : "1024x1024"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/code/app-ios/Storage/Assets.xcassets/Contents.json b/code/app-ios/Storage/Assets.xcassets/Contents.json
new file mode 100644
index 0000000..73c0059
--- /dev/null
+++ b/code/app-ios/Storage/Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/code/app-ios/Storage/ContentView.swift b/code/app-ios/Storage/ContentView.swift
new file mode 100644
index 0000000..132dfd7
--- /dev/null
+++ b/code/app-ios/Storage/ContentView.swift
@@ -0,0 +1,25 @@
+//
+// ContentView.swift
+// Storage
+//
+// Created by Ivar Løvlie on 14/11/2022.
+//
+
+import SwiftUI
+
+struct ContentView: View {
+ var body: some View {
+ VStack {
+ Image(systemName: "globe")
+ .imageScale(.large)
+ .foregroundColor(.accentColor)
+ Text("Hello, world!")
+ }
+ }
+}
+
+struct ContentView_Previews: PreviewProvider {
+ static var previews: some View {
+ ContentView()
+ }
+}
diff --git a/code/app-ios/Storage/Preview Content/Preview Assets.xcassets/Contents.json b/code/app-ios/Storage/Preview Content/Preview Assets.xcassets/Contents.json
new file mode 100644
index 0000000..73c0059
--- /dev/null
+++ b/code/app-ios/Storage/Preview Content/Preview Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/code/app-ios/Storage/StorageApp.swift b/code/app-ios/Storage/StorageApp.swift
new file mode 100644
index 0000000..43a0cbc
--- /dev/null
+++ b/code/app-ios/Storage/StorageApp.swift
@@ -0,0 +1,17 @@
+//
+// StorageApp.swift
+// Storage
+//
+// Created by Ivar Løvlie on 14/11/2022.
+//
+
+import SwiftUI
+
+@main
+struct StorageApp: App {
+ var body: some Scene {
+ WindowGroup {
+ ContentView()
+ }
+ }
+}
diff --git a/code/app-web/package.json b/code/app-web/package.json
new file mode 100644
index 0000000..95e54e9
--- /dev/null
+++ b/code/app-web/package.json
@@ -0,0 +1,25 @@
+{
+ "name": "kit",
+ "version": "0.0.1",
+ "private": true,
+ "scripts": {
+ "dev": "vite dev",
+ "build": "vite build",
+ "preview": "vite preview",
+ "test": "playwright test",
+ "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
+ "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch"
+ },
+ "devDependencies": {
+ "@playwright/test": "1.25.0",
+ "@sveltejs/adapter-auto": "next",
+ "@sveltejs/kit": "next",
+ "svelte": "^3.44.0",
+ "svelte-check": "^2.7.1",
+ "svelte-preprocess": "^4.10.6",
+ "tslib": "^2.3.1",
+ "typescript": "^4.7.4",
+ "vite": "^3.1.0"
+ },
+ "type": "module"
+}
diff --git a/code/app-web/playwright.config.ts b/code/app-web/playwright.config.ts
new file mode 100644
index 0000000..6ad3a7f
--- /dev/null
+++ b/code/app-web/playwright.config.ts
@@ -0,0 +1,10 @@
+import type { PlaywrightTestConfig } from '@playwright/test';
+
+const config: PlaywrightTestConfig = {
+ webServer: {
+ command: 'npm run build && npm run preview',
+ port: 4173
+ }
+};
+
+export default config;
diff --git a/code/app-web/src/app.d.ts b/code/app-web/src/app.d.ts
new file mode 100644
index 0000000..8f4d638
--- /dev/null
+++ b/code/app-web/src/app.d.ts
@@ -0,0 +1,9 @@
+// See https://kit.svelte.dev/docs/types#app
+// for information about these interfaces
+// and what to do when importing types
+declare namespace App {
+ // interface Locals {}
+ // interface PageData {}
+ // interface Error {}
+ // interface Platform {}
+}
diff --git a/code/app-web/src/app.html b/code/app-web/src/app.html
new file mode 100644
index 0000000..5b53ef7
--- /dev/null
+++ b/code/app-web/src/app.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8" />
+ <link rel="icon" href="%sveltekit.assets%/favicon.png" />
+ <meta name="viewport" content="width=device-width" />
+ %sveltekit.head%
+ </head>
+ <body>
+ <div>%sveltekit.body%</div>
+ </body>
+</html>
diff --git a/code/app-web/src/routes/+page.svelte b/code/app-web/src/routes/+page.svelte
new file mode 100644
index 0000000..5982b0a
--- /dev/null
+++ b/code/app-web/src/routes/+page.svelte
@@ -0,0 +1,2 @@
+<h1>Welcome to SvelteKit</h1>
+<p>Visit <a href="https://kit.svelte.dev">kit.svelte.dev</a> to read the documentation</p>
diff --git a/code/app-web/static/favicon.png b/code/app-web/static/favicon.png
new file mode 100644
index 0000000..825b9e6
--- /dev/null
+++ b/code/app-web/static/favicon.png
Binary files differ
diff --git a/code/app-web/svelte.config.js b/code/app-web/svelte.config.js
new file mode 100644
index 0000000..892f0c4
--- /dev/null
+++ b/code/app-web/svelte.config.js
@@ -0,0 +1,15 @@
+import adapter from '@sveltejs/adapter-auto';
+import preprocess from 'svelte-preprocess';
+
+/** @type {import('@sveltejs/kit').Config} */
+const config = {
+ // Consult https://github.com/sveltejs/svelte-preprocess
+ // for more information about preprocessors
+ preprocess: preprocess(),
+
+ kit: {
+ adapter: adapter()
+ }
+};
+
+export default config;
diff --git a/code/app-web/tests/test.ts b/code/app-web/tests/test.ts
new file mode 100644
index 0000000..4e57937
--- /dev/null
+++ b/code/app-web/tests/test.ts
@@ -0,0 +1,6 @@
+import { expect, test } from '@playwright/test';
+
+test('index page has expected h1', async ({ page }) => {
+ await page.goto('/');
+ expect(await page.textContent('h1')).toBe('Welcome to SvelteKit');
+});
diff --git a/code/app-web/tsconfig.json b/code/app-web/tsconfig.json
new file mode 100644
index 0000000..6ae0c8c
--- /dev/null
+++ b/code/app-web/tsconfig.json
@@ -0,0 +1,17 @@
+{
+ "extends": "./.svelte-kit/tsconfig.json",
+ "compilerOptions": {
+ "allowJs": true,
+ "checkJs": true,
+ "esModuleInterop": true,
+ "forceConsistentCasingInFileNames": true,
+ "resolveJsonModule": true,
+ "skipLibCheck": true,
+ "sourceMap": true,
+ "strict": true
+ }
+ // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias
+ //
+ // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes
+ // from the referenced tsconfig.json - TypeScript does not merge them in
+}
diff --git a/code/app-web/vite.config.ts b/code/app-web/vite.config.ts
new file mode 100644
index 0000000..1695034
--- /dev/null
+++ b/code/app-web/vite.config.ts
@@ -0,0 +1,8 @@
+import { sveltekit } from '@sveltejs/kit/vite';
+import type { UserConfig } from 'vite';
+
+const config: UserConfig = {
+ plugins: [sveltekit()]
+};
+
+export default config;