Skip to content

Commit

Permalink
Merge pull request #1006 from internxt/feat/s3-lp
Browse files Browse the repository at this point in the history
[MKT-417]: feat/S3 storage LP
  • Loading branch information
xabg2 authored Aug 21, 2024
2 parents 625ecaf + 140b925 commit 2c1016c
Show file tree
Hide file tree
Showing 52 changed files with 2,957 additions and 149 deletions.
5 changes: 4 additions & 1 deletion .env.local.example
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
SENDGRID_API_KEY=
NEXT_PUBLIC_RECAPTCHA_V3_PK=
RECAPTCHA_V3_SK=
NEXT_PUBLIC_RECAPTCHA_V3=
COINMARKETCAP_API_KEY=
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY_TEST=
Expand Down Expand Up @@ -29,3 +29,6 @@ NEXT_PUBLIC_GA_ID=
NEXT_PUBLIC_IMPACT_API=
CLOUDFLARE_STATIC_ASSETS_HOST=
NEXT_PUBLIC_CLOUDFLARE_STATIC_ASSETS_FULL_PATH=
NEXT_PUBLIC_OBJECT_STORAGE_USER_ACTIVATION_URL=
NEXT_PUBLIC_OBJECT_STORAGE_PRICE_ID=
NEXT_PUBLIC_RETURN_URL_OBJECT_STORAGE_CHECKOUT=
4 changes: 3 additions & 1 deletion .github/workflows/pre-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,9 @@ jobs:
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- run: echo '${{ secrets.ENV_LOCAL }}' > .env.local

- name: Create .env.local
run: echo '${{ secrets.ENV_LOCAL }}' > .env.local

- name: Install dependencies
run: yarn install
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
[![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=internxt_website&metric=code_smells)](https://sonarcloud.io/summary/new_code?id=internxt_website)
[![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=internxt_website&metric=duplicated_lines_density)](https://sonarcloud.io/summary/new_code?id=internxt_website)


# Project Manteinance

We aim to have:
Expand Down
46 changes: 32 additions & 14 deletions next.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,21 +47,39 @@ module.exports = {
async redirects() {
return [
// REDIRECTS TO HOME
...['/cloud', '/roadmap', '/home', '/core', '/default.html', '/default.htm', '/merch', '/giveawayoftheday'].map(
(src) => ({
source: src,
destination: '/',
permanent: false,
}),
),
...[
'/cloud',
'/roadmap',
'/home',
'/core',
'/default.html',
'/default.htm',
'/merch',
'/giveawayoftheday',
'/cloud-object-storage',
'/cloud-object-storage/checkout',
].map((src) => ({
source: src,
destination: '/',
permanent: false,
})),
// REDIRECTS TO HOME (WITH LANG)
...['/cloud', '/roadmap', '/home', '/core', '/default.html', '/default.htm', '/merch', '/giveawayoftheday'].map(
(src) => ({
source: `/:lang${src}`,
destination: '/:lang',
permanent: false,
}),
),
...[
'/cloud',
'/roadmap',
'/home',
'/core',
'/default.html',
'/default.htm',
'/merch',
'/giveawayoftheday',
'/cloud-object-storage',
'/cloud-object-storage/checkout',
].map((src) => ({
source: `/:lang${src}`,
destination: '/:lang',
permanent: false,
})),
// =======================================================
// REDIRECTS TO PRICING
...['/sharewareonsale', '/special-offer', '/pricing-individuals-annually'].map((src) => ({
Expand Down
6 changes: 4 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@
"@mui/material": "^5.15.21",
"@phosphor-icons/react": "^2.1.5",
"@sendgrid/mail": "^8.1.0",
"@stripe/react-stripe-js": "^2.7.3",
"@stripe/stripe-js": "^4.1.0",
"@types/offscreencanvas": "^2019.7.3",
"aos": "^2.3.4",
"autoprefixer": "^10.0.2",
Expand All @@ -52,6 +54,7 @@
"react-device-detect": "^1.17.0",
"react-dom": "^18.2.0",
"react-fast-marquee": "^1.2.1",
"react-hook-form": "^7.52.2",
"react-hook-roulette": "^0.0.10",
"react-live-chat-loader": "^2.8.0",
"react-loading-skeleton": "^3.3.1",
Expand All @@ -67,7 +70,6 @@
"devDependencies": {
"@cypress/code-coverage": "^3.12.39",
"@svgr/webpack": "^6.5.1",
"@tailwindcss/line-clamp": "0.4.0",
"@types/jest": "^29.4.0",
"@types/memory-cache": "^0.2.1",
"@types/node": "^15.0.1",
Expand All @@ -84,7 +86,7 @@
"reset-css": "5.0.1",
"sass": "1.41.0",
"swc-plugin-coverage-instrument": "^0.0.20",
"tailwindcss": "3.1.8",
"tailwindcss": "^3.4.8",
"typescript": "^4.1.5"
},
"browser": {
Expand Down
2 changes: 2 additions & 0 deletions public/robots.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
User-agent: *
Allow: /
Disallow: /cloud-object-storage/checkout
Disallow: /aeebcee77ac34a3d81bd10133fd53cc7869978f3
Sitemap: https://internxt.com/sitemap.xml
66 changes: 66 additions & 0 deletions src/assets/lang/de/integrated-checkout.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
{
"title": "Sie sind fast da! Sicher zur Kasse gehen:",
"pay": "Bezahlen",
"paying": "Bezahlen...",
"checkout": "Zur Kasse",
"authComponent": {
"signUp": {
"emailAddress": "Ihre E-Mail-Adresse",
"password": "Passwort erstellen"
},
"signIn": {
"emailAddress": "Ihre E-Mail-Adresse",
"password": "Ihr Passwort"
},
"title": {
"signUp": "Ein Konto erstellen",
"signIn": "Anmelden",
"userIsSignedIn": "Benutzer angemeldet als"
},
"emailMustNotBeEmpty": "Die E-Mail darf nicht leer sein",
"privacyGuarantee": "Datenschutzgarantie: Wir teilen Ihre Informationen nicht und werden Sie nur kontaktieren, wenn es notwendig ist, um unseren Service zu bieten."
},
"paymentTitle": "Wählen Sie eine Zahlungsmethode",
"productCard": {
"title": "Bestellübersicht",
"selectedPlan": "Ausgewählter Plan",
"renewalPeriod": {
"month": "monatlich",
"year": "jährlich",
"lifetime": "lebenslang"
},
"plan": {
"month": "{{spaceToUpgrade}} - 1 {{interval}}-Plan",
"year": "{{spaceToUpgrade}} - 1 {{interval}}-Plan",
"lifetime": "{{spaceToUpgrade}} - {{interval}}-Plan"
},
"billed": {
"month": "Monatliche Abrechnung",
"year": "Jährliche Abrechnung",
"lifetime": "Einmalige Zahlung"
},
"saving": "Sie sparen {{percent}}%",
"planDetails": {
"title": "Plandetails:",
"features": [
"{{spaceToUpgrade}} verschlüsselter Speicher",
"Verschlüsseltes Teilen von Dateien und Ordnern",
"Passwortgeschütztes Teilen von Dateien",
"Zugriff auf Ihre Dateien von jedem Gerät",
"Zugang zu allen unseren Diensten",
"Hochladen von Dateien bis zu 20GB",
"Zwei-Faktor-Authentifizierung (2FA)",
"Premium-Kundensupport",
"30-Tage-Geld-zurück-Garantie"
]
},
"total": "Gesamt: ",
"addCoupon": {
"buttonTitle": "Gutschein hinzufügen",
"inputText": "Gutscheincode",
"applyCodeButtonTitle": "Anwenden"
},
"amountSaved": "Sparen ",
"withAnnualBilling": "mit jährlicher Abrechnung"
}
}
168 changes: 168 additions & 0 deletions src/assets/lang/en/cloud-object-storage.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
{
"HeroSection": {
"title": {
"line1": "Internxt S3 ",
"line2": "compatible object storage"
},
"description": "An efficient, scalable cloud storage solution for storing, accessing, and managing large-scale data.",
"cta": "Get started"
},
"PredictablePricingSection": {
"title": "Simple, predictable pricing with zero fees and no API charges",
"description": "Avoid the hassle of unpredictable storage bills. Internxt offers a straightforward rate for storage capacity with no hidden fees.",
"info": [
{
"title": "100% Hot",
"description": "Ultra fast and instantly accessible"
},
{
"title": "Up to 80%",
"description": "More affordable than AWS"
},
{
"title": "Zero fees",
"description": "Free data transfer"
}
]
},
"PriceCardSection": {
"title": "Internxt object cloud storage combines security and efficiency",
"description": "Internxt object storage is an affordable, high-performance solution revolutionizing online data storage, perfect for individuals or organizations needing reliable and secure infrastructure at a minimal cost.",
"cardText": {
"label": "Internxt S3",
"perTB": "Per TB/Billed monthly",
"price": "6.99",
"cta": "Select plan",
"whatsIncluded": {
"title": "What's included:",
"features": [
"Billed monthly",
"Server-side encryption",
"AWS S3 and IAM API compatible",
"Increased speed",
"Flexible storage",
"Open source",
"GDPR compliant",
"Premium customer support"
]
}
}
},
"HowMuchYouNeedSection": {
"title": "How much storage do you need?",
"description": "Find out how much you can save with Internxt object storage. Use our cost calculator to see how we compare to hyperscalers.",
"pay-as-you-go": "Pay-as-you-go pricing",
"perMonth": "/per month",
"perYear": "/per year",
"storageAmount": "Storage amount",
"percentDownloadPerMonth": "Percent download per month",
"companies": ["Internxt", "Microsoft", "Amazon", "Google"]
},
"WhyChooseInternxtSection": {
"title": "Why choose Internxt object storage?",
"description": "The benefits of object cloud storage with Internxt emphasize effective data management and security.",
"cards": [
{
"title": "Zero ingress and egress fees",
"description": "Zero ingress and egress fees eliminate costs for transferring data into or out of storage, allowing for predictable budgeting and cost savings. This benefit is crucial for businesses with frequent data movement or large-scale data operations."
},
{
"title": "Cost per GB",
"description": "With our pay-as-you-go model, you only pay for the storage you actually use. Object storage is designed to handle large volumes of unstructured data, which is typically less expensive per GB compared to structured data, which requires more complex management."
},
{
"title": "Durability & Availability",
"description": "We enable redundant data storage that replicates and distributes data across multiple European servers. Data is protected from loss or corruption with technology that guarantees 99.999999999% (11 9s) of data durability for each object."
},
{
"title": "Security",
"description": "With our object cloud storage, we use multiple security measures to protect your data. Data stored in isolated buckets is accessible only by you or those with permission and is end-to-end encrypted."
},
{
"title": "Simple storage service",
"description": "Internxt provides object storage using the S3 protocol to simplify and manage data workflows, ensuring high availability and durability of data with the added security focus that Internxt prioritizes."
},
{
"title": "Speed",
"description": "Object storage offers superior speed by allowing multiple read and write operations simultaneously and utilizing rich metadata for faster data retrieval. This allows for quicker access times and efficient handling of large volumes of data."
}
],
"bannerText": {
"title": "Internxt object cloud storage",
"description": "Experience superior data management, speed, and efficiency",
"cta": "Get started"
}
},
"FaqSection": {
"title": "Questions? We have answers",
"faq": [
{
"question": "What is object storage?",
"answer": [
"Object storage stores large amounts of data, like photos, videos, and emails, as individual “objects” with unique identifiers.",
"Unlike traditional file storage, which organizes data in a hierarchical file system, object storage stores data as objects in a flat address space, typically in a distributed storage infrastructure.",
"As a result, cloud object storage allows for easier scaling, faster access to individual items, and potentially lower costs depending on your storage needs."
]
},
{
"question": "What is a S3 protocol?",
"answer": [
"The S3 protocol, or Simple Storage Service protocol, is a set of rules and standards that define how data is accessed, stored, and managed within Amazon S3, a popular cloud storage service provided by Amazon Web Services (AWS)."
]
},
{
"question": "How much object storage do I get?",
"answer": [
"With Internxt cloud object storage, you can scale your storage to meet your needs. Our plans charge you monthly for each gigabyte-per-day-used you want to use. You can add or delete storage based on your needs."
]
},
{
"question": "Can I integrate Internxt object storage with existing applications and services?",
"answer": [
"Yes, Internxt object storage is compatible with AWS S3 APIs, allowing seamless integration with a wide range of applications, tools, and services that support the S3 protocol.",
"S3 object storage allows users to upload, retrieve, and manage objects (files and data) using a simple web interface and APIs. The protocol ensures data integrity, security through access controls, and scalability to accommodate varying storage needs seamlessly across distributed servers."
]
},
{
"question": "Does Internxt have a minimum monthly storage policy?",
"answer": [
"Internxt’s minimum monthly policy for object storage plans is 1TB. If stored objects are deleted before they have been stored with Internxt for 90 days, a time-deleted storage charge will be applied that is equal to the remaining days left on the monthly subscription.",
"This policy is the same as the minimum storage duration policy that AWS and other hyperscaler storage services charge."
]
},
{
"question": "Does Internxt have a monthly storage charge?",
"answer": [
"Internxt has a monthly minimum charge associated with a 1TB monthly paid account. If you store less than 1TB, for example, the 4KB minimum, you will be charged for 1TB of storage."
]
},
{
"question": "What if I want to store small files? (Less than 4 KB)",
"answer": [
"There is a minimum file size charge of 4KB. Storing a 4KB file will incur charges equivalent to a 1TB file. This policy resembles the minimum capacity charge per object policies found in some AWS storage."
]
},
{
"question": "What’s the cost of overwriting a file repeatedly without versioning?",
"answer": [
"For example, if you upload a file named 'file.pdf' and overwrite it with a new version without changing the file name or using versioning the next day, the original file will transition from active storage to deleted storage.",
"This incurs charges for one day of active storage and 29 or 89 days of deleted storage, depending on your account's minimum storage retention policy. Additionally, charges will apply for storing the new version of 'file.pdf.'"
]
},
{
"question": "How do I contact support?",
"answer": [
"If you have any questions, concerns, or feedback, you can contact our Customer Support Team via live chat or by emailing [[email protected]](mailto:[email protected])."
]
},
{
"question": "What if I want to cancel my plan?",
"answer": [
"If you delete objects from Internxt object storage before they have been stored for 90 days, you will still be charged as if those objects had been stored for the full 90 days.",
"This policy ensures a minimum charge period for stored data, regardless of how long the objects were actually stored before deletion.",
"If you want to cancel your object storage plan, email us at [email protected], and we’ll process the subscription cancellation."
]
}
]
}
}
Loading

0 comments on commit 2c1016c

Please sign in to comment.