Compare commits
7 Commits
footerImpr
...
tpm1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4e939b87fe | ||
| e8838d0277 | |||
| c9fc4ec8f9 | |||
| 4f58b87f97 | |||
| 937882fba2 | |||
| fdad72889c | |||
| 0ec897bcd0 |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -5,7 +5,7 @@ dist/
|
||||
|
||||
# dependencies
|
||||
node_modules/
|
||||
|
||||
public/host-api/
|
||||
# logs
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
|
||||
14
README.md
14
README.md
@@ -0,0 +1,14 @@
|
||||
### git flow guide / protocol
|
||||
|
||||
# dev - any one is free to create / push to / any experiment on this branch
|
||||
# staging - it is the stage for all developer. all branchout and push over here.
|
||||
*start point / fork point is staging, i.e. any fix/feature/improvement - you must start branching out from staging.
|
||||
|
||||
*better to name your branch with 'z-' , i.e. z-layout-footer-improvement (z-: identifier for temporary and safe to remove from the central repo -> then the file identifier -> then short info regarding the intent)
|
||||
*many developers prefer feat/feature_name, i faced issue managing those branch using cli (bsd even alpine) for the slash(/)
|
||||
## staging must have a automated test and deploy mechanism, so that developers can can always be on the same page regarding build/merge conflict issue
|
||||
# test - staging to test by tester
|
||||
# master - test to master by tester after full test
|
||||
# release - master to release with version tag
|
||||
|
||||
final packaging and release
|
||||
@@ -6,7 +6,8 @@
|
||||
"dev": "astro dev",
|
||||
"build": "astro build",
|
||||
"preview": "astro preview",
|
||||
"astro": "astro"
|
||||
"astro": "astro",
|
||||
"push-s33": "rsync -rv --exclude .hta_config/conf.php dist/ dev2@siliconpin.s33.siliconpin.com:/home/dev2/domains/siliconpin.s33.siliconpin.com/public_html/"
|
||||
},
|
||||
"dependencies": {
|
||||
"@astrojs/react": "^4.2.1",
|
||||
|
||||
BIN
public/assets/images/legal-agreement.jpeg
Normal file
BIN
public/assets/images/legal-agreement.jpeg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 191 KiB |
48
public/license.txt
Normal file
48
public/license.txt
Normal file
@@ -0,0 +1,48 @@
|
||||
TLDR;
|
||||
=====================================================
|
||||
Nirvana License, i.e. Beings needs no license
|
||||
=====================================================
|
||||
|
||||
Preamble
|
||||
------------
|
||||
GNU, MIT, APACHE, Opensource, Source available -
|
||||
So many options, why a new one?
|
||||
To add / remove confusion may be, or
|
||||
Just to remind Humans, you have evolved to as
|
||||
being, you don't need one. Having license is like
|
||||
having limitation, boundation not freedom, You
|
||||
can have a Driving license and drive irresponsibly,
|
||||
license provider / authority can impose some
|
||||
nonsense rules. No matter how hard we try, Beings
|
||||
don't like to be bound, limited...
|
||||
They want freedom... little more - Nirvana.
|
||||
-----------------------------------------------------
|
||||
|
||||
Experience
|
||||
------------
|
||||
Best of the best GPL(copyleft) and it's derivatives
|
||||
are confusing which one to choose & its protected
|
||||
by copyright laws, but i get the idea of 4 freedoms.
|
||||
Developers don't want to deal with lawyers (seems
|
||||
wasting years), we want to build something.
|
||||
I have seen license violation a lot, as they have
|
||||
a fleet of lawyers.
|
||||
I have seen Open Source is being used a suppressor
|
||||
to GNU,GPL -Freedom centric ones. Going against the
|
||||
ideology of creator of the open source definition
|
||||
Bruce Perens, Eric S. Raymond,
|
||||
-----------------------------------------------------
|
||||
|
||||
|
||||
Quote
|
||||
--------
|
||||
Every rule / law has an exception except this.
|
||||
Beings do not need a license, enough to have sense.
|
||||
- Suvankar Sarkar (AKA Kar)
|
||||
-----------------------------------------------------
|
||||
|
||||
=====================================================
|
||||
Mentioned some licenses above good to bad, there may be
|
||||
some reason to use any existing license.
|
||||
you are free to choose this one, defined below.
|
||||
.....................................................
|
||||
@@ -24,17 +24,17 @@ const pageImage = "https://images.unsplash.com/photo-1551731409-43eb3e517a1a?q=8
|
||||
<div class="max-w-4xl mx-auto space-y-12">
|
||||
<section class="bg-neutral-800 rounded-lg p-6 sm:p-8 border border-neutral-700">
|
||||
<h2 class="text-2xl font-bold text-white mb-4">Our Story</h2>
|
||||
<p class="text-neutral-300 mb-4 text-justify">
|
||||
<p class="text-neutral-300 mb-4">
|
||||
SiliconPin was founded in 2021 with a clear mission: to provide businesses of all sizes with reliable, high-performance hosting solutions that enable growth and innovation. What started as a small team of passionate developers and system administrators has grown into a trusted hosting provider serving clients across various industries.
|
||||
</p>
|
||||
<p class="text-neutral-300 text-justify">
|
||||
<p class="text-neutral-300">
|
||||
Based in Habra, West Bengal, India, our team combines technical expertise with a deep understanding of business needs to deliver hosting solutions that are not just technically sound but also aligned with our clients' business objectives.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section class="bg-neutral-800 rounded-lg p-6 sm:p-8 border border-neutral-700">
|
||||
<h2 class="text-2xl font-bold text-white mb-4">Our Mission</h2>
|
||||
<p class="text-neutral-300 text-justify">
|
||||
<p class="text-neutral-300">
|
||||
At SiliconPin, our mission is to empower businesses through technology by providing reliable, secure, and scalable hosting solutions. We believe that technology should enable businesses to focus on what they do best, without worrying about infrastructure management or technical complexities.
|
||||
</p>
|
||||
</section>
|
||||
@@ -44,25 +44,25 @@ const pageImage = "https://images.unsplash.com/photo-1551731409-43eb3e517a1a?q=8
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
|
||||
<div>
|
||||
<h3 class="text-xl font-medium text-[#6d9e37] mb-2">Reliability</h3>
|
||||
<p class="text-neutral-300 text-justify">
|
||||
<p class="text-neutral-300">
|
||||
We understand that downtime means lost business. That's why we prioritize reliability in everything we do, from our infrastructure to our customer service.
|
||||
</p>
|
||||
</div>
|
||||
<div>
|
||||
<h3 class="text-xl font-medium text-[#6d9e37] mb-2">Security</h3>
|
||||
<p class="text-neutral-300 text-justify">
|
||||
<p class="text-neutral-300">
|
||||
In an increasingly digital world, security is paramount. We implement robust security measures to protect our clients' data and applications.
|
||||
</p>
|
||||
</div>
|
||||
<div>
|
||||
<h3 class="text-xl font-medium text-[#6d9e37] mb-2">Innovation</h3>
|
||||
<p class="text-neutral-300 text-justify">
|
||||
<p class="text-neutral-300">
|
||||
We continuously explore new technologies and methodologies to improve our services and provide our clients with cutting-edge solutions.
|
||||
</p>
|
||||
</div>
|
||||
<div>
|
||||
<h3 class="text-xl font-medium text-[#6d9e37] mb-2">Customer Focus</h3>
|
||||
<p class="text-neutral-300 text-justify">
|
||||
<p class="text-neutral-300">
|
||||
Our clients' success is our success. We work closely with our clients to understand their needs and provide tailored solutions that help them achieve their goals.
|
||||
</p>
|
||||
</div>
|
||||
@@ -71,7 +71,7 @@ const pageImage = "https://images.unsplash.com/photo-1551731409-43eb3e517a1a?q=8
|
||||
|
||||
<section class="bg-neutral-800 rounded-lg p-6 sm:p-8 border border-neutral-700">
|
||||
<h2 class="text-2xl font-bold text-white mb-4">Why Choose SiliconPin?</h2>
|
||||
<ul class="list-disc list-inside space-y-3 text-neutral-300 text-justify">
|
||||
<ul class="list-disc list-inside space-y-3 text-neutral-300">
|
||||
<li>24/7 expert technical support</li>
|
||||
<li>99.9% uptime guarantee</li>
|
||||
<li>Scalable infrastructure to grow with your business</li>
|
||||
|
||||
27
src/pages/domains/add-domain.astro
Normal file
27
src/pages/domains/add-domain.astro
Normal file
@@ -0,0 +1,27 @@
|
||||
---
|
||||
import Layout from "../../layouts/Layout.astro"
|
||||
---
|
||||
<Layout title="">
|
||||
<div>
|
||||
<pre id="get-response">Adding domain, please wait...</pre>
|
||||
</div>
|
||||
|
||||
<script is:inline>
|
||||
fetch('/host-api/add-domain/')
|
||||
.then(response => {
|
||||
if (!response.ok) throw new Error('Network error');
|
||||
return response.json();
|
||||
})
|
||||
.then(data => {
|
||||
const resultElement = document.getElementById('get-response');
|
||||
if (data.status === 'success') {
|
||||
resultElement.textContent = `✅ ${data.message}\n${data.output || ''}`;
|
||||
} else {
|
||||
resultElement.textContent = `❌ ${data.message}`;
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
document.getElementById('get-response').textContent = `❌ Fetch Error: ${error.message}`;
|
||||
});
|
||||
</script>
|
||||
</Layout>
|
||||
45
src/pages/domains/delete-domain.astro
Normal file
45
src/pages/domains/delete-domain.astro
Normal file
@@ -0,0 +1,45 @@
|
||||
---
|
||||
import Layout from "../../layouts/Layout.astro"
|
||||
---
|
||||
<Layout title="">
|
||||
<div>
|
||||
<h2>Delete Domain</h2>
|
||||
<form id="deleteDomainForm">
|
||||
<input type="text" id="domainName" placeholder="example.com" required>
|
||||
<button type="submit">Delete Domain</button>
|
||||
</form>
|
||||
<pre id="deleteResponse"></pre>
|
||||
</div>
|
||||
|
||||
<script is:inline>
|
||||
document.getElementById('deleteDomainForm').addEventListener('submit', async (e) => {
|
||||
e.preventDefault();
|
||||
const domain = document.getElementById('domainName').value;
|
||||
const responseElement = document.getElementById('deleteResponse');
|
||||
|
||||
responseElement.textContent = "Deleting domain...";
|
||||
|
||||
try {
|
||||
const response = await fetch('/host-api/delete-domain/', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/x-www-form-urlencoded',
|
||||
},
|
||||
body: `domain=${encodeURIComponent(domain)}`
|
||||
});
|
||||
|
||||
const data = await response.json();
|
||||
|
||||
if (data.status === 'success') {
|
||||
responseElement.textContent = `✅ ${data.message}\nDomain: ${data.domain}`;
|
||||
// Refresh domain list if needed
|
||||
setTimeout(() => window.location.reload(), 1500);
|
||||
} else {
|
||||
responseElement.textContent = `❌ ${data.message}\nError: ${data.error || 'Unknown error'}`;
|
||||
}
|
||||
} catch (error) {
|
||||
responseElement.textContent = `❌ Network Error: ${error.message}`;
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</Layout>
|
||||
40
src/pages/domains/list-domain.astro
Normal file
40
src/pages/domains/list-domain.astro
Normal file
@@ -0,0 +1,40 @@
|
||||
---
|
||||
import Layout from "../../layouts/Layout.astro"
|
||||
---
|
||||
<Layout title="">
|
||||
<div>
|
||||
<pre id="get-response">Loading domains...</pre>
|
||||
</div>
|
||||
|
||||
<script is:inline>
|
||||
fetch('/host-api/list-domain/')
|
||||
.then(response => {
|
||||
if (!response.ok) throw new Error('Network error');
|
||||
return response.json();
|
||||
})
|
||||
.then(data => {
|
||||
const pre = document.getElementById('get-response');
|
||||
if (data.status === 'success') {
|
||||
// Format domains as a table
|
||||
let output = 'DOMAINS LIST:\n\n';
|
||||
output += 'Domain'.padEnd(40) + 'IP'.padEnd(15) + 'SSL'.padEnd(5) + 'Status\n';
|
||||
output += '-'.repeat(70) + '\n';
|
||||
|
||||
if (Object.keys(data.domains).length > 0) {
|
||||
Object.entries(data.domains).forEach(([domain, info]) => {
|
||||
output += `${domain.padEnd(40)}${info.IP.padEnd(15)}${info.SSL.padEnd(5)}${info.SUSPENDED === 'no' ? 'Active' : 'Suspended'}\n`;
|
||||
});
|
||||
} else {
|
||||
output += 'No domains found for this user\n';
|
||||
}
|
||||
|
||||
pre.textContent = output;
|
||||
} else {
|
||||
pre.textContent = `❌ Error: ${data.message}\nDebug: ${data.debug || ''}\nJSON Error: ${data.json_error || ''}`;
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
document.getElementById('get-response').textContent = `❌ Fetch Error: ${error.message}`;
|
||||
});
|
||||
</script>
|
||||
</Layout>
|
||||
@@ -2,8 +2,8 @@
|
||||
import Layout from '../layouts/Layout.astro';
|
||||
|
||||
// Page-specific SEO metadata
|
||||
const pageTitle = "SiliconPin - High-Performance Hosting Solutions";
|
||||
const pageDescription = "SiliconPin offers reliable, high-performance hosting solutions for PHP, Node.js, Python, Kubernetes (K8s), and K3s with 24/7 technical support.";
|
||||
const pageTitle = "SiliconPin - Lets create some digital freedom";
|
||||
const pageDescription = "SiliconPin - easy to deploy apps and tools, freedom oriented apps and tools, high-performance, hosting solutions for PHP, Node.js, Python, Kubernetes (K8s), and K3s, and technical support.";
|
||||
const pageImage = "https://images.unsplash.com/photo-1551731409-43eb3e517a1a?q=80&w=2000&auto=format&fit=crop";
|
||||
---
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ import Layout from '../layouts/Layout.astro';
|
||||
|
||||
// Page-specific SEO metadata
|
||||
const pageTitle = "Legal Agreement | SiliconPin";
|
||||
const pageDescription = "Review SiliconPin's legal agreement for using our hosting services. Find information about your legal rights and obligations.";
|
||||
const pageDescription = "Review SiliconPin's legal agreement for using our services. Find information about your legal rights and obligations.";
|
||||
const pageImage = "https://images.unsplash.com/photo-1551731409-43eb3e517a1a?q=80&w=2000&auto=format&fit=crop";
|
||||
---
|
||||
|
||||
@@ -23,6 +23,20 @@ const pageImage = "https://images.unsplash.com/photo-1551731409-43eb3e517a1a?q=8
|
||||
|
||||
<div class="max-w-4xl mx-auto space-y-8">
|
||||
<section class="bg-neutral-800 rounded-lg p-6 sm:p-8 border border-neutral-700">
|
||||
<h3 class="text-xl font-medium text-[#6d9e37]">TLDR;</h3>
|
||||
<p class="text-neutral-300">
|
||||
We are trying to create some digital freedom together. We avoid any vender locking - for you and us.
|
||||
some of us from DWD Consultancy Services, having a quite experience manipulating data and data resilience.
|
||||
Still we advise to keep a backup of your data periodically and use our automated backup and snapshot services (even AWS/GCP dont take data responsibility).
|
||||
You are responsible for your content, and we are responsible for our services.
|
||||
|
||||
If something goes wrong, we will try to fix it. For SLA we will refund or we will part ways.
|
||||
We are based in India, and Indian law applies to this agreement. We find some law funny and useless like the cookie acknowledgement.
|
||||
<br>
|
||||
we strongly feel just to be reasonable and fair to each other.
|
||||
</p>
|
||||
<hr>
|
||||
<br>
|
||||
<p class="text-neutral-300">
|
||||
This Legal Agreement ("Agreement") is a binding contract between you ("Customer" or "you") and SiliconPin ("Company", "we", or "us") governing your use of our hosting services and related products (collectively, the "Services"). By using our Services, you acknowledge that you have read, understood, and agree to be bound by this Agreement.
|
||||
</p>
|
||||
@@ -168,7 +182,7 @@ const pageImage = "https://images.unsplash.com/photo-1551731409-43eb3e517a1a?q=8
|
||||
If you have any questions about this Legal Agreement, please contact us:
|
||||
</p>
|
||||
<div class="text-neutral-300">
|
||||
<p>Email: <a href="mailto:legal@siliconpin.com" class="text-[#6d9e37] hover:underline">legal@siliconpin.com</a></p>
|
||||
<p>Email: <a href="mailto:contact@siliconpin.com" class="text-[#6d9e37] hover:underline">contact@siliconpin.com</a></p>
|
||||
<p>Phone: +91-700-160-1485</p>
|
||||
<p>Address: 121 Lalbari, GourBongo Road, Habra, W.B. 743271, India</p>
|
||||
</div>
|
||||
|
||||
19
src/pages/profile.astro
Normal file
19
src/pages/profile.astro
Normal file
@@ -0,0 +1,19 @@
|
||||
---
|
||||
import Layout from "../layouts/Layout.astro";
|
||||
const phpHello = `$_SESSION['userName']`;
|
||||
---
|
||||
|
||||
<Layout title="Profile Page">
|
||||
<div class="flex items-center justify-center min-h-screen bg-gray-700">
|
||||
<div class="w-96 p-6 shadow-lg rounded-lg bg-white text-center">
|
||||
<img class="w-24 h-24 rounded-full border-4 border-blue-500 mx-auto" src="/profile.jpg" alt="Profile Picture" />
|
||||
<h2 class="text-2xl font-semibold mt-4" set:html={phpHello ? phpHello : 'User Name'}></h2>
|
||||
<p class="text-gray-600">Frontend Developer</p>
|
||||
<p class="text-gray-500 text-sm mt-2">"Building amazing UI experiences one component at a time."</p>
|
||||
<div class="flex justify-center space-x-4 mt-4">
|
||||
<button class="bg-blue-500 text-white px-4 py-2 rounded-lg">Follow</button>
|
||||
<button class="bg-gray-200 text-black px-4 py-2 rounded-lg">Message</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Layout>
|
||||
Reference in New Issue
Block a user