diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..07820a4
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,16 @@
+root = true
+
+[*]
+charset = utf-8
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+[*.md]
+max_line_length = off
+trim_trailing_whitespace = false
+
+[*.cs]
+csharp_new_line_before_open_brace = none
+csharp_new_line_before_catch = false
+csharp_new_line_before_finally = false
+csharp_new_line_after_else = false
\ No newline at end of file
diff --git a/.env_Template b/.env_Template
new file mode 100755
index 0000000..98f082d
--- /dev/null
+++ b/.env_Template
@@ -0,0 +1,15 @@
+Payment_Service=StripeIntent # Options are [ StripeIntent ]
+
+Stripe_PublicKey=
+Stripe_PublicKey=
+Stripe_Endpoint_Secret=
+
+MySQL_Server=mistox-database
+MySQL_User=root
+MySQL_Database=mistox
+MySQL_Pass=oasv34$8gpv023dd # Random value for the server and MySQL to communicate with
+
+Email_Server= # Hostname of email server
+Email_Port= # SMTP port used
+Email_Address= # Email Address to send from
+Email_Password= # Password for the email address
\ No newline at end of file
diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml
new file mode 100644
index 0000000..700d713
--- /dev/null
+++ b/.gitea/workflows/build.yaml
@@ -0,0 +1,33 @@
+name: Docker Build and Release Upload
+
+on:
+ push:
+ branches:
+ - main
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - name: checkout
+ uses: actions/checkout@v4
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v3
+
+ - name: build and push database
+ run: |
+ docker buildx build \
+ --platform=linux/amd64,linux/arm64 \
+ -t docker.mistox.net/boredcareers-sql \
+ --push \
+ ./database
+
+ - name: build and push server
+ run: |
+ docker buildx build \
+ --platform=linux/amd64,linux/arm64 \
+ --build-arg BASE_URL=https://boredcareers.com \
+ -t docker.mistox.net/boredcareers-website \
+ --push \
+ .
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
old mode 100644
new mode 100755
index 643d047..1d52134
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,46 @@
-debug
-obj
-bin
\ No newline at end of file
+# See https://docs.github.com/get-started/getting-started-with-git/ignoring-files for more about ignoring files.
+
+# Compiled output
+/dist
+/tmp
+/out-tsc
+/bazel-out
+
+# Node
+node_modules
+/resources
+npm-debug.log
+yarn-error.log
+.angular
+
+# DotNet
+**/bin
+**/obj
+/debug
+
+# IDEs and editors
+.idea/
+.project
+.classpath
+.c9/
+*.launch
+.settings/
+*.sublime-workspace
+
+# Visual Studio Code
+.history/*
+
+# Miscellaneous
+/.angular/cache
+.sass-cache/
+/connect.lock
+/coverage
+/libpeerconnection.log
+testem.log
+/typings
+
+# System files
+.DS_Store
+Thumbs.db
+.env
+data
\ No newline at end of file
diff --git a/.vscode/launch.json b/.vscode/launch.json
index e92f468..31e3151 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -5,8 +5,8 @@
"name": "Launch ASP.NET Core backend",
"type": "coreclr",
"request": "launch",
- "preLaunchTask": "server-build",
- "program": "boredcareers.dll",
+ "preLaunchTask": "build-all",
+ "program": "Server.dll",
"args": [],
"cwd": "${workspaceFolder}/debug/",
"stopAtEntry": false,
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
index d109ab7..1866296 100644
--- a/.vscode/tasks.json
+++ b/.vscode/tasks.json
@@ -7,11 +7,41 @@
"type": "process",
"args": [
"build",
- "${workspaceFolder}/boredcareers/boredcareers.csproj",
+ "${workspaceFolder}/src/Server/Server.csproj",
"-o",
"${workspaceFolder}/debug/",
],
"problemMatcher": "$msCompile"
},
+ {
+ "label": "client-build",
+ "command": "ng",
+ "type": "process",
+ "options": {
+ "cwd": "${workspaceFolder}/src/Client"
+ },
+ "args": [
+ "build",
+ "--base-href=http://localhost:5000"
+ ],
+ "problemMatcher": "$msCompile"
+ },
+ {
+ "label": "client-packages",
+ "command": "npm",
+ "type": "process",
+ "options": {
+ "cwd": "${workspaceFolder}/src/Client"
+ },
+ "args": [
+ "install"
+ ],
+ "problemMatcher": "$msCompile"
+ },
+ {
+ "label": "build-all",
+ "dependsOn": ["client-packages", "client-build", "server-build" ],
+ "dependsOrder": "sequence"
+ }
]
}
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
new file mode 100755
index 0000000..e56ee72
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,75 @@
+######################
+## Build Frontend ##
+######################
+
+FROM --platform=$BUILDPLATFORM node:alpine AS build-frontend
+WORKDIR /src
+
+# Define base address
+ARG BASE_URL=/
+
+# Install the angular CLI
+RUN npm install -g @angular/cli
+
+# Copy the package.json into this build step
+COPY ./src/Client/package.json ./
+
+# Pull dependencies
+RUN npm install
+
+# Copy the rest of the frontend over
+COPY ./src/Client/ ./
+
+# Compile the source
+RUN ng build --base-href=${BASE_URL}
+
+#####################
+## Build Backend ##
+#####################
+
+FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:9.0 AS build-backend
+WORKDIR /src
+
+# Copy the csproj
+COPY ./src/Server/Server.csproj ./
+
+# Restore the Server
+RUN dotnet restore './Server.csproj'
+
+# Copy the rest of the backend over
+COPY ./src/Server/ ./
+
+# Get the target arch
+ARG TARGETARCH
+
+# Build the source
+RUN set -e && \
+ if [ "$TARGETARCH" = "arm64" ]; then RID="linux-arm64"; \
+ elif [ "$TARGETARCH" = "amd64" ]; then RID="linux-x64"; \
+ else echo "Unsupported ARCH: $TARGETARCH"; exit 1; \
+ fi && \
+ dotnet publish './Server.csproj' -c Release -r ${RID} -o /app/publish
+
+################
+## Publish ##
+################
+
+FROM mcr.microsoft.com/dotnet/aspnet:9.0
+WORKDIR /app
+
+ENV ASPNETCORE_HTTP_PORTS=5000
+ENV StripeKey=null
+ENV MySQLServer=null
+ENV MySQLUser=null
+ENV MySQLPass=null
+ENV MySQLDatabase=Mistox
+
+EXPOSE 5000
+
+# Copy in the server
+COPY --from=build-backend /app/publish ./
+
+# Copy in the client
+COPY --from=build-frontend /debug/wwwroot ./wwwroot/
+
+ENTRYPOINT ["dotnet", "MistoxWebsite.Server.dll", "--url", "http://localhost:5000"]
\ No newline at end of file
diff --git a/ToDo.txt b/ToDo.txt
new file mode 100755
index 0000000..854f2d6
--- /dev/null
+++ b/ToDo.txt
@@ -0,0 +1,53 @@
+Server:
+ AccountInventory.cs
+ SetInventory isnt fully implimented
+
+ ProjectMistData.cs
+ Data inside the sql doesnt match what is inside the database
+
+ Emails:
+ Dont follow theme of website
+
+ Admin Functions:
+ Dont inforce Admin on the API side
+
+ Authentication ProductController
+ When the create account is called. right after the getaccount is called.
+ Have all New for database return the object they create
+
+ Update API
+ Split apart the different routes and Functions
+ No more new / update -> only get / set
+ Make all apis return statuscodes
+ make all input types form's
+ make all getLoggedInUsers() -> make sure that i cant just call getLoggedInUserID
+
+ Need to timeout email reset tokens
+
+Client:
+ Program
+ Probably need to turn on cors at some point
+
+ Account
+ Need to add in settings / data pages
+ After a new account is created notify a user that they need to verify their email before logging in
+
+ ProductController
+ Need to figure out new way to download purchased items as there is currently no way
+
+ Store
+ Edit product needs created
+ Need to add cart back
+ Need to add in payment page
+ Need to add in payment success/failed
+ Need to add in Receipt page
+
+ TopBar
+ No way to minimize the UI topbar on mobile
+ Not themed on mobile
+
+ API
+ Some of the API's Changed. Need to go back and update the client API calls
+
+database
+ Need to create all the forign key policies
\ No newline at end of file
diff --git a/boredcareers.sln b/boredcareers.sln
deleted file mode 100644
index 6e891b4..0000000
--- a/boredcareers.sln
+++ /dev/null
@@ -1,34 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.0.31903.59
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "boredcareers", "boredcareers\boredcareers.csproj", "{05900A3D-9780-47A4-90D9-D99673FA5EDB}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Debug|x64 = Debug|x64
- Debug|x86 = Debug|x86
- Release|Any CPU = Release|Any CPU
- Release|x64 = Release|x64
- Release|x86 = Release|x86
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {05900A3D-9780-47A4-90D9-D99673FA5EDB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {05900A3D-9780-47A4-90D9-D99673FA5EDB}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {05900A3D-9780-47A4-90D9-D99673FA5EDB}.Debug|x64.ActiveCfg = Debug|Any CPU
- {05900A3D-9780-47A4-90D9-D99673FA5EDB}.Debug|x64.Build.0 = Debug|Any CPU
- {05900A3D-9780-47A4-90D9-D99673FA5EDB}.Debug|x86.ActiveCfg = Debug|Any CPU
- {05900A3D-9780-47A4-90D9-D99673FA5EDB}.Debug|x86.Build.0 = Debug|Any CPU
- {05900A3D-9780-47A4-90D9-D99673FA5EDB}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {05900A3D-9780-47A4-90D9-D99673FA5EDB}.Release|Any CPU.Build.0 = Release|Any CPU
- {05900A3D-9780-47A4-90D9-D99673FA5EDB}.Release|x64.ActiveCfg = Release|Any CPU
- {05900A3D-9780-47A4-90D9-D99673FA5EDB}.Release|x64.Build.0 = Release|Any CPU
- {05900A3D-9780-47A4-90D9-D99673FA5EDB}.Release|x86.ActiveCfg = Release|Any CPU
- {05900A3D-9780-47A4-90D9-D99673FA5EDB}.Release|x86.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/boredcareers/App.razor b/boredcareers/App.razor
deleted file mode 100644
index 6fd3ed1..0000000
--- a/boredcareers/App.razor
+++ /dev/null
@@ -1,12 +0,0 @@
- Sorry, there's nothing at this address.
Welcome to Mistox LLC. A project and hobby of Derek Holloway.
+I am an indi-developer who has been making small projects since I was 13. I originally learned lua and spent 4 years mastering it. Then I moved onto C# which is my preferred language
+My programming catalog consist of C#, Lua, SQL, C++, C, and JavaScript in the order of knowledge from best to passiable.
+Im currently in college for computer sciences and should honestly be doing that instead of this but I find working on this website and hobby games to be way more enjoyable.
+I would love to learn how to use Blender in order to make all the models for my games but with the amount of work ive already made for myself im going to hold off for now.
+This website and everything on it are the long countless hours of my time and motivation to create something that I can be proud of and share that with the world.
+So if you would like to support me as a small creator please feel free to leave a donation from on the store page. It would means a lot to me.
+For the nerds out there, this website is a blazor webassembly app, hosted on an ubuntu webserver, with a mysql backend.
+All the passwords are encrypted using bcrypt for your safety and all the data is only allowed through SSL.
+After you make your account. All the data in the database is easily accessable through the account settings and
+you can delete your account at any time. Including all your data with it so there is no risk.
+I wont show ads and never will and I refuse to use trackers on this site.
+If you have any questions, concerns, or would like to suggest a feature, bug-fix, or request to help. Please feel
+free to reach out to me at derek@mistox.net
+ + +What is the game
+Project-Mist is a survival game. Kind of like a battle royal in a sense but, think of it backwards. And no I know what your thinking. Its not the first person to die wins. No instead its a never ending survival game where you can free roam and build structures. The catch is, the person who has the highest stats [i.e A combination of kills, survival time] has a marker placed on their forhead.
+How will the game play
+When you join the game you will be able to customize your character. There you can set a default loadout for your player. This will be the spawn weapon and gear. After that you will drop into the map with other players to fend for your life. The kill-leader will be marked loosely on the mini-map. You can choose to go after the kill leader or you can choose to loot first. The choice is yours. But be aware that if you survive long enough you will become the new kill leader.
+Current Idea Board *SUBJECT TO CHANGE*
+Survival Game
look at item to pick up 'e' for third person and click for third [No nearby]
normal weapons with bullet drop bullet travel time
snipers but rare [Maybe special]
Abilities selectable at spawn
a max 20 credit slider where you can spend them on traits
Stamina -> run for longer distances
Strength -> carry more weight
Vitality -> Have more base health
Stealth -> Approximate location on map is bigger
More weight slows player some
Backpacks -> Add slots but not weight
Oddball style game
Map that shows the relitive area of the top player
spawn with classes
2 mags
no attachments
unlock guns with experience
no health regen
final hit headshots = 20 credits
final hit bodyshots = 10 credits
classes require credits to spawn with better stuff
inventory and credits are transferrable between servers and sessions
combat loggging - if leave in combat start from scratch
one dynamicly roaming entity of the night ( Impossible to kill, when near heart starts pumping and vinegrette )
goes after people possible to get away
Dyanmic day and night cycle
Dynamic weather ( rain, fog, thunder, lightning )
floods that cause roaring rivers to fill that cannot be swam
Fires that char trees(no leaves), regrows in 3ish days
Master leaderboard in the main menu of top players per rank
Ranked lobby ( Disabled until player base )
small towns around a main centralized area( ie city or temple )
large servers
random spawned skin boxes that require credits to open
purchasable skins
bullet penatration on certain materials
bullet reflection on certain materials
No kill leader until you get at least 2 kills minimum
Tournament mode
all players spawn at the same time
hold oddball for 30mins total
server quits introducing people into game after 5 hrs. (last man standing mode)
last person in server wins
on death quit to new server
everyone becomes oddball
less players alive equal less oddball area
+
|
+
+
|
+