Upload website

This commit is contained in:
2025-09-29 11:24:54 +02:00
parent 337fb757d5
commit 7fa3715aec
82 changed files with 11586 additions and 2 deletions

353
dist/projects/storagemanager/index.html vendored Normal file
View File

@@ -0,0 +1,353 @@
<!DOCTYPE html>
<html lang="en">
<head>
<!-- CSS -->
<link rel="stylesheet" href="https://static.janishutz.com/css/slider.css">
<link rel="stylesheet" href="/css/style.css">
<link rel="stylesheet" href="/css/side-by-side.css">
<!-- SEO -->
<title>Storage Manager - get organized | janishutz.com</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=7" />
<meta name="keywords" content="storagemanager, management, home use, business use" />
<meta name="description" content="The perfect utility to keep track of your home or business storage" />
<meta name="og:title" content="StorageManager - get organized | janishutz.com" />
<meta name="og:image" content="https://static.janishutz.com/projects/storagemanager-title.jpg" />
<meta name="og:type" content="website" />
<meta name="og:url" content="https://janishutz.com/projects/storagemanager" />
<meta name="og:locale" content="en_GB" />
<meta property="twitter:card" content="summary_large_image">
<meta name="theme-color" content="#152b5c">
<style>
#yt-embed {
width: 70vw;
height: 40vw;
}
</style>
</head>
<body>
<nav><script>
// Themeing
let loadedTheme = localStorage.getItem( 'theme' ) ?? 'auto';
var theme = loadedTheme;
let loadTheme = () => {
loadedTheme = localStorage.getItem( 'theme' ) ?? 'auto';
if ( loadedTheme === 'auto' ) {
if ( window.matchMedia( '(prefers-color-scheme: dark)' ).matches ) {
theme = 'dark_mode';
} else {
theme = 'light_mode';
}
}
if ( theme === 'dark_mode' ) {
document.documentElement.classList.remove( 'light' );
document.documentElement.classList.add( 'dark' );
} else {
document.documentElement.classList.add( 'light' );
document.documentElement.classList.remove( 'dark' );
theme === 'light_mode';
}
}
loadTheme();
setTimeout( () => {
document.querySelector( 'body' ).classList.add( 'loaded' );
}, 500 );
function changeTheme () {
theme = document.getElementById( 'theme-select' ).value;
localStorage.setItem( 'theme', theme );
loadTheme();
}
</script>
<div class="nav-placeholder"></div>
<div class="nav-top-bar">
<a href="/" class="logo-wrapper">
<img src="https://static.janishutz.com/logo.jpg" alt="janishutz.com logo" class="logo">
</a>
<!-- <img src="https://static.janishutz.com/logo.jpg" alt="janishutz.com logo" class="logo"> -->
<div class="nav-toggle" onclick="openMenu( 'toggle' )">
<span class="line" id="line1"></span>
<span class="line" id="line2"></span>
<span class="line" id="line3"></span>
</div>
</div>
<div class="nav-menu">
<div class="nav-link-wrapper">
<a class="nav-link-header" href="/projects">
<span class="material-symbols-outlined nav-icon">lightbulb</span>
<div>Projects</div>
</a>
<div class="nav-link-dropdown">
<a href="/projects">View all</a>
<a href="/projects/storagemanager">StorageManager</a>
<a href="/projects/qrscanner">QR & Barcode Insight</a>
<a href="/projects/libreevent">libreǝvent</a>
<a href="/projects/musicplayer">MusicPlayer</a>
<a href="https://conductorcalc.com" target="_blank">ConductorCalc</a>
</div>
</div>
<div class="nav-link-wrapper">
<a class="nav-link-header" href="/services">
<span class="material-symbols-outlined nav-icon">build</span>
<div>Services</div>
</a>
<div class="nav-link-dropdown">
<a href="https://store.janishutz.com">Store</a>
<a href="https://account.janishutz.com">Account</a>
<a href="https://development.janishutz.com">Custom Websites</a>
</div>
</div>
<a href="/" class="logo-wrapper">
<img src="https://static.janishutz.com/logo.jpg" alt="janishutz.com logo" class="logo">
</a>
<div class="nav-link-wrapper">
<a class="nav-link-header" href="/about">
<span class="material-symbols-outlined nav-icon">info</span>
<div>About</div>
</a>
<div class="nav-link-dropdown">
<a href="/about">About janishutz.com</a>
<a href="/about/aboutme">About Janis Hutz</a>
<a href="https://blog.janishutz.com" target="_blank">Blog</a>
<a href="/legal">Legal</a>
</div>
</div>
<div class="nav-link-wrapper">
<a class="nav-link-header" href="/support">
<span class="material-symbols-outlined nav-icon">support_agent</span>
<div>Support</div>
</a>
<div class="nav-link-dropdown">
<a href="https://support.janishutz.com" target="_blank">Support Hub</a>
<a href="https://support.janishutz.com/knowledgebase.php" target="_blank">Knowledgebase</a>
<a href="/support/old">Old websites</a>
</div>
</div>
</div>
<script>
const toggle = document.getElementsByClassName( 'nav-toggle' )[ 0 ];
const menu = document.getElementsByClassName( 'nav-menu' )[ 0 ];
const bar = document.getElementsByClassName( 'nav-top-bar' )[ 0 ];
function openMenu( action ) {
if ( action === 'toggle' ) {
if ( menu.classList.contains( 'active' ) ) {
openMenu( 'close' );
} else {
openMenu( 'open' );
}
} else if ( action === 'close' ) {
menu.classList.remove( 'active' );
toggle.classList.remove( 'active' );
document.body.classList.remove( 'no-scroll' );
} else if ( action === 'open' ) {
document.body.classList.add( 'no-scroll' );
toggle.classList.add( 'active' );
menu.classList.add( 'active' );
bar.classList.remove( 'slide-up' );
menu.classList.remove( 'slide-up' );
}
}
let oldScroll = 0;
document.addEventListener( 'scroll', () => {
if ( oldScroll < window.scrollY && window.innerHeight * 0.2 < window.scrollY ) {
bar.classList.add( 'slide-up' );
menu.classList.add( 'slide-up' );
} else if ( oldScroll > window.scrollY ) {
bar.classList.remove( 'slide-up' );
menu.classList.remove( 'slide-up' );
}
oldScroll = window.scrollY;
} );
// TODO: Hide menu on when scrolling down
</script>
</nav>
<div class="content">
<img src="https://static.janishutz.com/assets/logos/storagemanager.jpg" alt="storage manager logo"
class="project-logo">
<h1>Storage Manager</h1>
<p>Managing storage can be a challenging task, especially when the volume of items stored becomes large. If
products in that storage can go bad, you are very likely to produce quite a bit of waste. StorageManager is
an iOS app that can send you notifications such that you do not forget about products that are about to
expire.</p>
<a href="https://apps.apple.com/us/app/storagemanager/id6443832297" target="_blank" class="button">Get it today</a>
<hr class="divider">
<h2>Features</h2>
<div class="side-by-side">
<div class="side-by-side-item left">
<h3>Notifications</h3>
<p>StorageManager can send you notifications when a product is about to expire so you don't forget about
the product. Notifications time can be customised in settings.</p>
</div>
<div class="side-by-side-item right">
<h3>Adding products</h3>
<p>You can add products by simply scanning the product's barcode and adding some data on the product.
The app will remember the product such that the next time you scan it, it will autofill all relevant
data.</p>
</div>
</div>
<div class="side-by-side">
<div class="side-by-side-item left">
<h3>Editing products</h3>
<p>Products can be edited straight from the products details page. You can edit every aspect of the
product data to the extent that you can make it an entirely different kind.</p>
</div>
<div class="side-by-side-item right">
<h3>Removing products</h3>
<p>You can remove products by simply swiping to delete. Alternatively you can delete products by hitting
the delete icon in the details page or even better, by scanning the product's barcode.</p>
</div>
</div>
<div class="side-by-side">
<div class="side-by-side-item left">
<h3>Organisation</h3>
<p>StorageManager allows you to create product categories and one storage location. If you purchase the
full version, you can add an infinite amount of storage locations. The In-App-Purchase is sharable
with up to five people in your family.</p>
</div>
<div class="side-by-side-item right">
<h3>Filtering &amp; sorting</h3>
<p>You can sort and filter all the data. Many different sorting options and filters are available, as
well as a powerful search function, that finds all your products within milliseconds.</p>
</div>
</div>
<div class="side-by-side">
<div class="side-by-side-item left">
<h3>iCloud-Sync</h3>
<p>StorageManager has iCloud-Sync built in and enabled for ALL users. Simply allow iCloud access for
StorageManager and you are off to the races. Your storage data syncs magically between all your
Apple-Devices.</p>
</div>
<div class="side-by-side-item right">
<h3>Free <sup>*</sup></h3>
<p>You can use StorageManager for free, with one small exception being adding an unlimited amount of
storage locations. For this you will need to make an In-App-Purchase. Please check the AppStore for
the exact pricing as this is dependent on your country.</p>
</div>
</div>
<div class="side-by-side">
<div class="side-by-side-item left">
<h3>Easy setup</h3>
<p>StorageManager features an easy to use, guided setup such that you can be up and running within just
one or two minutes of downloading the app.</p>
</div>
<div class="side-by-side-item right">
<h3>Display settings</h3>
<p>Choose what is displayed on the main page of the app with simple toggles in the app's settings page.
This allows you to see everything you want at a glance or have more items on the screen at once.</p>
</div>
</div>
<hr class="divider">
<a href="https://apps.apple.com/us/app/storagemanager/id6443832297" target="_blank" class="button" style="margin-top: 50px;">Get it today</a>
</div>
<footer><div class="footer-container">
<img src="https://static.janishutz.com/logo.jpg" alt="janishutz.com logo" class="logo">
<div class="footer-text-container">
<div class="footer-category">
<h3>Projects</h3>
<a href="/projects">View all</a>
<a href="/projects/storagemanager">StorageManager</a>
<a href="/projects/qrscanner">QR & Barcode Insight</a>
<a href="/projects/libreevent">libreǝvent</a>
<a href="/projects/musicplayer">MusicPlayer</a>
<a href="/projects/biogascontrollerapp">BiogasControllerApp</a>
</div>
<div class="footer-category">
<h3>Info</h3>
<a href="/about">About janishutz.com</a>
<a href="/about/aboutme">About Janis Hutz</a>
<div class="theme-selector">
<span class="material-symbols-outlined" id="theme-switcher-icon">light_mode</span>
<select id="theme-select" onchange="changeTheme()">
<option value="auto">Auto</option>
<option value="light_mode">Light</option>
<option value="dark_mode">Dark</option>
</select>
</div>
</div>
<div class="footer-category">
<h3>Support</h3>
<a href="https://support.janishutz.com">Get support</a>
<a href="https://support.janishutz.com/knowledgebase.php">Knowledgebase</a>
<a href="/support/support-status">Support status</a>
</div>
<div class="footer-category">
<h3>Legal</h3>
<a href="/legal/privacy">Privacy Policy</a>
<a href="/legal/tos">Terms of Service</a>
<a href="/legal/returns">Return policy</a>
<a href="/support/support-status">Support Status</a>
<div onclick="showAnalytics()" style="cursor: pointer;">Analytics</div>
</div>
<div class="analytics-notice" id="analytics">
<h2>Analytics</h2>
<p>This website uses privacy preserving product analytics allowing me to analyze aggregated statistics for this website. All data collected will not allow me to uniquely identify you. <br><a href="/legal/privacy">Privacy Policy</a></p>
<!-- Matomo stuff -->
<div id="matomo-opt-out">
Loading...
</div>
<script src="https://analytics.janishutz.com/index.php?module=CoreAdminHome&action=optOutJS&divId=matomo-opt-out&language=auto&fontColor=000000&fontSize=12px&fontFamily=monospace&showIntro=1"></script>
<!-- Matomo Image Tracker-->
<img referrerpolicy="no-referrer-when-downgrade" src="https://analytics.janishutz.com/matomo.php?idsite=2&amp;rec=1" style="border:0" alt="" />
<!-- End Matomo -->
<button class="analytics-button" onclick="closeAnalytics()"><span class="material-symbols-outlined">close</span></button>
<div class="small-symbol" onclick="showAnalytics()" title="Change your analytics preferences"><span class="material-symbols-outlined">Analytics</span></div>
</div>
</div>
<script>
function closeAnalytics () {
document.getElementById( 'analytics' ).classList.remove( 'show' );
localStorage.setItem( 'analytics-dismissed', 'true' );
}
function showAnalytics () {
document.getElementById( 'analytics' ).classList.add( 'show' );
}
if ( !localStorage.getItem( 'analytics-dismissed' ) ) {
document.getElementById( 'analytics' ).classList.add( 'show' );
}
// Show which theme is loaded
document.getElementById( 'theme-select' ).value = loadedTheme;
</script>
</div>
</footer>
<script src="https://static.janishutz.com/js/yt-embed.js"></script>
<script src="https://static.janishutz.com/js/slider.js"></script>
<script>
activateSlider(7500);
</script>
</body>
</html>