diff --git a/Content/DevTutoriais/formatos-de-imagem.en.md b/Content/DevTutoriais/formatos-de-imagem.en.md new file mode 100644 index 0000000..df96234 --- /dev/null +++ b/Content/DevTutoriais/formatos-de-imagem.en.md @@ -0,0 +1,129 @@ +--- +title: "PNG, WebP or SVG? Choosing the Right Format for Your QR Code" +description: "Technical comparison between PNG, WebP and SVG for QR codes via API. Learn which format to use depending on your use case: email, printing, web or apps." +keywords: "qr code png, qr code webp, qr code svg, qr code image format, api qr code format" +author: "QRRapido" +date: 2026-03-08 +lastmod: 2026-03-08 +image: "" +--- + +# PNG, WebP or SVG? Choosing the Right Format for Your QR Code + +The QRRapido API supports three output formats: `png`, `webp` and `svg`. Each has distinct characteristics that impact file size, quality and compatibility. Use the `outputFormat` parameter in the request to choose. + +```json +{ + "content": "https://yoursite.com", + "type": "url", + "outputFormat": "webp" +} +``` + +--- + +## Quick Summary + +| Format | Size | Lossless scaling | Compatibility | Ideal for | +|---|---|---|---|---| +| **PNG** | Medium | No (raster) | Universal | Printing, email, legacy | +| **WebP** | Small (~30% smaller) | No (raster) | Modern browsers | Web, apps, APIs | +| **SVG** | Variable (usually smaller) | **Yes** | Browsers, Adobe, Figma | Logos, banners, vector printing | + +--- + +## PNG — The Universal Standard + +PNG is a lossless raster format, ideal for QR codes because it preserves 100% of the black and white pixels without introducing artifacts. + +**When to use:** +- Sending by email (legacy email clients don't support WebP) +- Integration with legacy systems +- When maximum compatibility is a priority + +**Why not JPEG?** + +> JPEG uses lossy compression that introduces blur artifacts on the edges of QR code modules. This can make the code unreadable, especially at smaller sizes. **Never use JPEG for QR codes.** + +```json +{ "outputFormat": "png" } +``` + +--- + +## WebP — Recommended for Web and Apps + +WebP is the ideal format for most modern integrations. Visual quality is indistinguishable from PNG for QR codes, with **25–35% smaller file size**. + +**Advantages:** +- Faster loading on web pages +- Lower bandwidth usage in APIs with high volume +- Native support in all modern browsers (Chrome, Safari 14+, Firefox, Edge) +- Lower storage consumption in buckets (S3, GCS, etc.) + +**When to use:** +- Display in `` on websites and web applications +- iOS/Android apps (both support WebP) +- When you store the generated QR codes + +```json +{ "outputFormat": "webp" } +``` + +To display in HTML: +```html + + + QR Code + +``` + +--- + +## SVG — For Lossless Scaling + +SVG is a vector format: the QR code is described mathematically, not as pixels. This means it can be resized to any size — from a 16px icon to a 3-meter banner — without loss of quality. + +**When to use:** +- Graphic materials (banners, posters, packaging, merchandise) +- Integration with design tools (Figma, Illustrator, Canva) +- High-quality printing without depending on resolution + +**Caution:** +- Do not use SVG for email sending (most email clients block SVG for security reasons) +- Some older QR readers may have difficulty with SVG rendered directly via `` + +```json +{ "outputFormat": "svg" } +``` + +To display SVG inline, the `qrCodeBase64` must be decoded first: +```js +const svgString = atob(qrCodeBase64); +document.getElementById('qr').innerHTML = svgString; +``` + +--- + +## Size Comparison (real example — 400px, simple URL) + +| Format | Typical size | +|---|---| +| PNG | ~8–12 KB | +| WebP | ~5–8 KB | +| SVG | ~3–6 KB | + +> Sizes vary depending on content complexity (QR codes with more data have more modules). + +--- + +## Recommendation by Use Case + +| Scenario | Recommended format | +|---|---| +| Display on website/app | **WebP** | +| Send by email | **PNG** | +| Graphic printing / design | **SVG** | +| Store in cloud | **WebP** | +| Maximum compatibility | **PNG** | +| No concern about size | **PNG** | diff --git a/Content/DevTutoriais/gerando-qrcodes-pela-api.en.md b/Content/DevTutoriais/gerando-qrcodes-pela-api.en.md new file mode 100644 index 0000000..46f8ecc --- /dev/null +++ b/Content/DevTutoriais/gerando-qrcodes-pela-api.en.md @@ -0,0 +1,186 @@ +--- +title: "How to Generate QR Codes via API: All Supported Types" +description: "Complete guide to generating QR codes via REST API using each available type: URL, Pix, Wi-Fi, vCard, WhatsApp, SMS, email and free text." +keywords: "api qr code, generate qr code api, qr code rest api, qrrapido api, qr code types" +author: "QRRapido" +date: 2026-03-08 +lastmod: 2026-03-08 +image: "" +--- + +# How to Generate QR Codes via API: All Supported Types + +The QRRapido API supports 8 QR code types. All use the same endpoint — the only difference is the `type` field and the specific fields that make up the `content`. + +## Endpoint + +``` +POST /api/v1/QRManager/generate +X-API-Key: your_key_here +Content-Type: application/json +``` + +## Base Request Structure + +```json +{ + "content": "...", + "type": "url", + "size": 400, + "primaryColor": "#000000", + "backgroundColor": "#FFFFFF", + "outputFormat": "png" +} +``` + +| Field | Type | Default | Description | +|---|---|---|---| +| `content` | string | required | QR code content | +| `type` | string | `"url"` | QR code type (see below) | +| `size` | int | `300` | Size in pixels (100–2000) | +| `primaryColor` | string | `"#000000"` | Module color (hex) | +| `backgroundColor` | string | `"#FFFFFF"` | Background color (hex) | +| `outputFormat` | string | `"png"` | Format: `png`, `webp`, `svg` | + +--- + +## Type `url` — Link / URL + +The simplest: any valid URL. + +```json +{ + "type": "url", + "content": "https://yoursite.com/product/123" +} +``` + +> Use `https://` whenever possible. QR codes with HTTP may be blocked by some modern readers. + +--- + +## Type `pix` — Pix Payment + +The `content` must be the **Pix key** of the recipient. The generation produces a static Pix QR code (without connection to the Central Bank — see the dedicated Pix tutorial). + +```json +{ + "type": "pix", + "content": "contact@yourcompany.com" +} +``` + +Accepted keys: CPF/CNPJ (digits only), email, phone in `+5511999999999` format, or random key (UUID). + +--- + +## Type `wifi` — Wi-Fi Network + +The `content` uses the standard `WIFI:` format: + +```json +{ + "type": "wifi", + "content": "WIFI:S:NetworkName;T:WPA;P:NetworkPassword;;" +} +``` + +| Parameter | Meaning | Values | +|---|---|---| +| `S:` | SSID (network name) | text | +| `T:` | Security type | `WPA`, `WEP`, `nopass` | +| `P:` | Password | text | +| `H:` | Hidden network (optional) | `true` / `false` | + +--- + +## Type `vcard` — Business Card + +The `content` must be a complete vCard v3: + +```json +{ + "type": "vcard", + "content": "BEGIN:VCARD\nVERSION:3.0\nFN:John Smith\nORG:Company Inc\nTEL:+15559876543\nEMAIL:john@company.com\nURL:https://company.com\nEND:VCARD" +} +``` + +--- + +## Type `whatsapp` — WhatsApp Link + +```json +{ + "type": "whatsapp", + "content": "https://wa.me/15559876543?text=Hi%2C%20I%27d%20like%20to%20know%20more" +} +``` + +The number must include country code and area code, without spaces or symbols. The `text` parameter is optional. + +--- + +## Type `email` — Email with subject and body + +```json +{ + "type": "email", + "content": "mailto:contact@company.com?subject=Subject&body=Initial%20message" +} +``` + +--- + +## Type `sms` — Pre-filled SMS + +```json +{ + "type": "sms", + "content": "sms:+15559876543?body=Hi%2C%20I%20want%20more%20information" +} +``` + +--- + +## Type `texto` — Free Text + +Any string up to 2048 characters: + +```json +{ + "type": "texto", + "content": "Table 12 — Priority service available at the main counter." +} +``` + +--- + +## Success Response + +```json +{ + "success": true, + "qrCodeBase64": "iVBORw0KGgo...", + "qrId": "abc123", + "generationTimeMs": 180, + "remainingCredits": 42, + "fromCache": false, + "format": "png", + "mimeType": "image/png" +} +``` + +To display the image directly in HTML: + +```html +QR Code +``` + +--- + +## General Tips + +- **Colors**: maintain high contrast between `primaryColor` and `backgroundColor`. Avoid yellow on white or light gray on white. +- **Minimum printed size**: use `size` ≥ 400 for printing. For digital use (screens), 300 is sufficient. +- **Cache**: identical requests return `fromCache: true` without consuming additional credit. +- **Rate limit**: the `X-RateLimit-Remaining` and `X-Quota-Remaining` headers in the response indicate your current balance. diff --git a/Content/DevTutoriais/qr-code-pix-estatico.en.md b/Content/DevTutoriais/qr-code-pix-estatico.en.md new file mode 100644 index 0000000..3823238 --- /dev/null +++ b/Content/DevTutoriais/qr-code-pix-estatico.en.md @@ -0,0 +1,142 @@ +--- +title: "Static Pix QR Code: How It Works and Developer Responsibilities" +description: "Understand what a static Pix QR Code is, how it is generated by the API, its limitations, and why payment verification is your application's responsibility — not QRRapido's." +keywords: "pix qr code, static pix, pix qr code api, pix qr code integration, pix without central bank" +author: "QRRapido" +date: 2026-03-08 +lastmod: 2026-03-08 +image: "" +--- + +# Static Pix QR Code: How It Works and Developer Responsibilities + +## What is a Static Pix QR Code? + +Pix has two types of QR codes: **static** and **dynamic**. + +| | Static Pix | Dynamic Pix | +|---|---|---| +| Amount | Variable (payer decides) | Fixed (set by recipient) | +| Generation | Any system | PSP/Central Bank intermediary | +| Central Bank registration | **No** | Yes | +| Payment notification | **No** | Yes (webhook) | +| Typical use | Donations, simple charges | E-commerce, tracked billing | + +The QRRapido API generates **exclusively static Pix QR codes**. This is deliberate and sufficient for most use cases. + +--- + +## How the API Generates the Pix QR Code + +When you send a request with `type: "pix"`, the API assembles a string in the **EMV® QR Code** standard (the international standard adopted by Brazil's Central Bank) and generates the image: + +```json +{ + "type": "pix", + "content": "contact@yourcompany.com" +} +``` + +The `content` field must contain **only the Pix key** of the recipient. The API handles assembling the EMV payload correctly. + +**Accepted keys:** +- Email: `contact@company.com` +- CPF/CNPJ: digits only — `12345678901` or `12345678000195` +- Phone: `+5511999999999` +- Random key (EVP): `123e4567-e89b-12d3-a456-426614174000` + +--- + +## What the API Does NOT Do (and Why This Matters) + +> **QRRapido has no integration with the Central Bank, any bank, or any PSP (Payment Service Provider).** + +This means: + +1. **The API does not know if the payment was made.** It only generates the QR code image. What happens after — whether the customer scanned it, whether the Pix was sent, whether it landed in the right account — is outside the scope of the API. + +2. **There is no payment confirmation webhook.** The API does not send notifications when a Pix is received. + +3. **The QR code does not expire automatically.** A static Pix QR code is valid indefinitely (or until the Pix key is removed by the recipient at the bank). + +4. **There is no transaction traceability.** Two requests with the same key generate the same QR code (with cache). It is not possible to associate a scan with a specific transaction via the API. + +--- + +## Your Application's Responsibility + +If you use the API to generate Pix QR codes in a payment flow, **it is your application's responsibility to verify receipt**. The correct ways to do this are: + +### Option 1 — Recipient's Bank Pix API +Connect directly to the Pix API of the bank where the key is registered. Most banks offer: +- Query of received charges +- Real-time notification webhook (when the bank supports it) + +### Option 2 — PSP / Payment Gateway +Use an intermediary such as Mercado Pago, PagSeguro, Efí Bank, Asaas, etc. They offer dynamic Pix with full control: fixed amount, expiration, webhooks and unique identification per charge. + +### Option 3 — Manual Verification +For low volumes or informal contexts (donations, in-person sales), the person responsible for receiving verifies the bank statement manually. + +--- + +## Recommended Flow (with confirmation) + +``` +Your App QRRapido API Recipient's Bank + | | | + |-- POST /generate (pix) -->| | + |<-- qrCodeBase64 ----------| | + | | | + |-- Shows QR to customer | | + | | | + |-- Query payment ---------------------------------->| + |<-- Received status or not --------------------------| + | | | + |-- Releases product/service| | +``` + +--- + +## Complete Request Example + +```bash +curl -X POST https://qrrapido.site/api/v1/QRManager/generate \ + -H "X-API-Key: your_key_here" \ + -H "Content-Type: application/json" \ + -d '{ + "content": "contact@yourcompany.com", + "type": "pix", + "size": 400, + "outputFormat": "webp" + }' +``` + +--- + +## Appropriate Use Cases for Static Pix via API + +- Donation QR code on an institutional website +- Digital menu with key for in-person payment +- Batch QR generation for printed materials (flyers, cards) +- Applications where the seller and buyer interact in person and the seller confirms receipt in the bank app + +## Use Cases That Require Dynamic Pix (not supported by this API) + +- E-commerce with automatic order confirmation +- Fixed-amount billing with expiration +- Invoice issuance linked to payment +- Automated financial reconciliation + +--- + +## Summary + +| What the API does | What the API does NOT do | +|---|---| +| Generates the Pix QR code image | Verifies if the payment was made | +| Formats the EMV payload correctly | Sends confirmation webhook | +| Delivers PNG, WebP or SVG | Communicates with the Central Bank or banks | +| Works with any valid Pix key | Guarantees the key belongs to who claims it does | + +Correct QR code generation is the API's responsibility. **Payment confirmation is your application's responsibility.** diff --git a/Content/Tutoriais/como-criar-qr-code-pix.en.md b/Content/Tutoriais/como-criar-qr-code-pix.en.md new file mode 100644 index 0000000..de29869 --- /dev/null +++ b/Content/Tutoriais/como-criar-qr-code-pix.en.md @@ -0,0 +1,89 @@ +--- +title: "How to Create a Static PIX QR Code" +description: "Learn how to create a static PIX QR Code to receive instant payments easily and securely. Complete guide with QR Rapido." +keywords: "pix qr code, generate pix qr code, static pix, create payment qr code, pix qr code free, pix qr code no fee" +author: "QR Rapido" +date: 2026-01-24 +lastmod: 2026-01-24 +image: "/images/tutoriais/pix-qr-hero.jpg" +--- + +# How to Create a Static PIX QR Code: The Complete Guide + +**PIX** revolutionized the way payments are made in Brazil. And for those who sell products or receive donations, the **PIX QR Code** is an essential tool. In this tutorial, you will learn how to generate a **Static PIX QR Code** for free using **QR Rapido**, ensuring speed and security in your transactions. + +## 💸 What is a Static PIX QR Code? + +The PIX Static QR Code is ideal for those who want to receive multiple payments of the same amount or varying amounts using a single code. It always "points" to the same bank account (your PIX key) and can contain additional information such as the recipient's name and city. + +**Main advantages:** +- **Does not expire:** Use the same code indefinitely. +- **No fees:** Generation is free and does not depend on intermediaries (gateways). +- **Versatile:** Can have a fixed value set or leave the amount open for the payer to fill in. +- **Ideal for:** Merchants, freelancers, donations, crowdfunding and service providers. + +## 🎯 Step by Step to Generate on QR Rapido + +**QR Rapido** now has a native and secure tool to generate your PIX code. Follow the steps: + +### 1. Access the Generator + +Open [QR Rapido](https://qrrapido.site) and in the QR Code type menu, select the **"💸 PIX"** option. + +### 2. Fill in the Required Data + +For the code to work at any bank, the Central Bank standard requires three pieces of information: + +- **PIX Key:** Can be your CPF, CNPJ, Email, Phone or Random Key. +- **Beneficiary Name:** Your name or your company's name (must be the same as on the bank account). +- **City:** The city where the account was opened or where you reside. + +> **⚠️ Note:** Fill in the data exactly as registered at your bank to avoid errors during payment. + +### 3. Set Amount and Description (Optional) + +- **Amount:** If you sell a product with a fixed price (e.g., "Coffee $3.00"), fill in the amount field. If it's a donation or variable payment, leave it blank so the customer can enter the amount. +- **Transaction ID (TxID):** An optional code to help you identify the payment in your statement (e.g., "ORDER01"). If not filled, the system will use the default `***`. +- **Description:** A message that may appear on the payer's confirmation screen (e.g., "Service Payment"). + +### 4. Generate and Customize + +Click **"Generate QR Code"**. You can customize the color and style (rounded corners, for example) to match your brand, but remember: **Keep high contrast** (preferably black on white) to ensure any phone can read it. + +### 5. Download + +Download the image in **PNG** for use on social media or **PDF/SVG** to print in high quality on signs and posters. + +## 🏪 Tip for Merchants and Sellers + +If you sell **many different products** and want to speed up payment at the checkout or on shelves, QR Rapido has the ideal solution: + +> **Subscribe to our Monthly Plan!** +> With the Premium plan, you can create and manage an **exclusive QR Code for each product** in your catalog. That way, the customer scans the specific product's code and the correct amount is already filled in, avoiding errors and speeding up the sale. [Learn more about the Premium plan](/Pagamento/SelecaoPlano). + +## 💡 Professional Tips for Your PIX + +### Print with Quality +If you're going to place the QR Code on your store counter, print it at a readable size (at least 2" x 2"). Protect the paper with lamination or use an acrylic display. + +### Test Before Distributing +Before printing 1000 flyers or posting on Instagram, do a real test! Open your bank app, read the generated QR Code and transfer a symbolic amount to make sure the data is correct and the money goes to the right account. + +### Security +QR Rapido generates the code directly in your browser. We do **not** have access to your bank account and do **not** intermediate the money. The payment goes directly from the customer to your account. + +## 🚀 Why use QR Rapido for PIX? + +- **EMVCo Compliance:** We use the official international standard, guaranteeing compatibility with all major banking apps. +- **Privacy:** Your sensitive data is not stored. +- **Speed:** Generate your code in seconds, without lengthy registrations. + +## Conclusion + +Having a PIX QR Code on hand speeds up service and conveys professionalism. With **QR Rapido**, you create yours for free, customize it and start receiving payments right away. + +**Ready to receive payments?** [Generate your PIX QR Code now →](https://qrrapido.site) + +--- + +*Questions about generation? [Contact us](https://qrrapido.site/en/Contact) or check our FAQ.* diff --git a/Content/Tutoriais/como-criar-qr-code-whatsapp.en.md b/Content/Tutoriais/como-criar-qr-code-whatsapp.en.md new file mode 100644 index 0000000..a303809 --- /dev/null +++ b/Content/Tutoriais/como-criar-qr-code-whatsapp.en.md @@ -0,0 +1,108 @@ +--- +title: "How to Create a QR Code for WhatsApp" +description: "Learn how to create a WhatsApp QR Code that allows users to instantly start a conversation with you" +keywords: "whatsapp qr code, qr code for whatsapp, create whatsapp qr code, whatsapp qr" +author: "QR Rapido" +date: 2025-10-08 +lastmod: 2025-10-08 +image: "/images/tutoriais/whatsapp-qr-hero.jpg" +--- + +# How to Create a QR Code for WhatsApp + +Creating a **WhatsApp QR Code** is one of the most efficient ways to facilitate direct contact with your customers, friends or followers. With a simple scan, anyone can instantly start a conversation with you without needing to save your number. + +## 📱 Why use a QR Code for WhatsApp? + +WhatsApp QR Codes are extremely useful for: + +- **Businesses**: Facilitating customer service +- **Freelancers**: Speeding up contact with potential clients +- **Events**: Enabling quick networking +- **Marketing**: Increasing conversion in campaigns + +## 🎯 Step by Step + +### 1. Prepare your number + +First, you need to have your number in international format: + +``` +1 555 987-6543 +``` + +Remove all spaces and dashes: + +``` +15559876543 +``` + +### 2. Create the WhatsApp URL + +The WhatsApp URL follows this pattern: + +``` +https://wa.me/15559876543 +``` + +You can add a pre-defined message: + +``` +https://wa.me/15559876543?text=Hi!%20I%20would%20like%20more%20information +``` + +### 3. Generate the QR Code + +Access [QR Rapido](https://qrrapido.site) and: + +1. Select the **URL** type +2. Paste the WhatsApp URL +3. Customize the colors (optional) +4. Click **Generate QR Code** +5. Download in high quality + +## 💡 Professional Tips + +### Customize the Initial Message + +Set up an automatic welcome message to improve the experience: + +``` +https://wa.me/15559876543?text=Hi!%20I%20found%20you%20through%20your%20QR%20Code +``` + +### Use on Printed Materials + +- **Business cards**: Make instant contact easy +- **Flyers and leaflets**: Increase engagement +- **Packaging**: Offer direct customer support +- **Banners**: At events and trade shows + +### Monitor the Results + +To track how many people scanned your QR Code, consider using a URL shortener with analytics before generating the QR Code. + +## ⚠️ Important Cautions + +1. **Test before printing**: Always scan to verify it works +2. **Minimum size**: Keep at least 1.2" x 1.2" for easy reading +3. **Adequate contrast**: Use colors that contrast well (black on white is ideal) +4. **Clear message**: Indicate what the QR Code is for + +## 🚀 Advantages of using QR Rapido + +- ⚡ **Ultra-fast**: Generate in less than 1 second +- 🎨 **Customizable**: Choose colors and styles +- 📥 **High quality**: Download in PNG, SVG and PDF +- 🔒 **Secure**: Your data is not stored +- 💯 **Free**: up to 50 QR codes per day after login + +## Conclusion + +Creating a QR Code for WhatsApp is simple and can revolutionize the way you communicate with your audience. With QR Rapido, you have everything you need to create professional QR Codes in seconds. + +**Ready to start?** [Create your QR Code now →](https://qrrapido.site/en) + +--- + +*Have questions? [Contact us](https://qrrapido.site/en/Contact)!* diff --git a/Content/Tutoriais/como-criar-qr-code-wifi.en.md b/Content/Tutoriais/como-criar-qr-code-wifi.en.md new file mode 100644 index 0000000..dd681df --- /dev/null +++ b/Content/Tutoriais/como-criar-qr-code-wifi.en.md @@ -0,0 +1,179 @@ +--- +title: "How to Create a Free WiFi QR Code: Share Your Network in Seconds" +description: "Learn how to create a free WiFi QR Code in a few clicks. Share your network password without typing with our fast and secure generator." +keywords: "wifi qr code, create wifi qr code, free wifi qr code generator, wifi network qr code, share wifi password, free wifi qr code, how to make wifi qr code" +author: "QR Rapido" +date: 2025-10-10 +lastmod: 2025-10-10 +image: "/images/tutoriais/qr-code-wifi-hero.jpg" +--- + +# How to Create a Free WiFi QR Code: Share Your Network in Seconds + +Tired of typing long and complicated passwords every time a guest asks for your WiFi password? With a **WiFi QR Code**, you can share your network instantly! In this complete tutorial, you'll learn how to create a WiFi QR Code for free in less than 2 minutes. + +## Why Use a QR Code for WiFi? + +Sharing your WiFi network through a QR Code offers several advantages: + +- **Convenience**: Guests connect instantly without typing passwords +- **Security**: No need to say the password out loud or write it down +- **Professionalism**: Ideal for businesses, cafes, restaurants and offices +- **Time saving**: Eliminates typing errors and repeated requests +- **Compatibility**: Works on virtually all modern smartphones + +## Step by Step: How to Create Your WiFi QR Code + +### Step 1: Select the QR Code Type + +Access the generator and choose the **WiFi** option from the list of available QR Code types. + +In the dropdown menu, you'll find various options like URL/Link, Plain Text, Business Card, SMS and Email. For this tutorial, select **WiFi**. + +### Step 2: Fill in Your WiFi Network Details + +Now you need to enter your network details. See the required fields: + +#### NetworkName (Network Name) * +Type exactly the name of your WiFi network (SSID). For example: "YourNetworkName" + +**Important tip**: The name must be identical to what appears when you search for WiFi networks on your phone. It is case-sensitive! + +#### SecurityType (Security Type) +Select the encryption type of your network: + +- **WPA Network (most common)**: WPA/WPA2/WPA3 - recommended and most secure +- **WEP (very old)**: Not recommended as it is insecure +- **No password**: For public networks without protection + +#### NetworkPassword (Network Password) * +Enter your WiFi network password. Use the eye icon to view and verify you typed it correctly. + +**Important**: The password is also case-sensitive. Check it carefully! + +#### HiddenNetwork (Hidden Network) +Check this option only if your network is configured as hidden (does not appear in the list of available networks). + +### Step 3: Customize Your QR Code (Optional) + +Give your QR Code your business's look! + +#### Customization Options: + +**Primary Color**: Choose the color of the QR Code squares (default: black) + +**Background Color**: Set the background color (default: white) + +**Size**: Choose from: +- Small (200px) - For digital use +- Medium (300px) - Recommended for printing +- Large (500px) - For banners and posters + +**Margin**: +- Compact - Takes up less space +- Normal - Recommended (better readability) +- Wide - For large prints + +**Design tip**: Maintain good contrast between the primary color and background to ensure all phones can read the code. + +### Step 4: Generate and Download + +Click the **"⚡ Generate QR Code Quickly"** button and you're done! Your WiFi QR Code will be generated instantly. + +You can: +- Download the image in high quality +- Print and place in visible locations +- Share digitally +- Save to use later + +## How Your Guests Will Use the WiFi QR Code + +It's very simple! Your guests just need to: + +1. Open the phone camera (iOS or Android) +2. Point at the QR Code +3. Tap the notification that appears +4. Connect automatically to the WiFi + +**No app download needed!** Most smartphones since 2018 already have built-in QR Code readers in the camera. + +## Where to Use Your WiFi QR Code + +### For Businesses +- Office reception areas +- Meeting rooms +- Waiting areas +- Coworking spaces + +### For Retail +- Restaurant tables +- Café counters +- Stores and boutiques +- Beauty salons + +### For Homes +- Entry hallway +- Barbecue area +- Refrigerator (for parties) +- Home office + +### For Events +- Event credentials +- Trade show booths +- Conferences +- Weddings and parties + +## Security Tips + +⚠️ **Important**: Consider creating a separate WiFi network for guests (guest network) if you want to: + +- Protect your personal devices +- Limit speed for guests +- Have control over who accesses your network +- Keep your main network private + +Many modern routers allow you to easily create guest networks in the settings. + +## Frequently Asked Questions (FAQ) + +### Does the WiFi QR Code expire? +No! The QR Code works indefinitely as long as the network data (name and password) remains the same. + +### Does it work on iPhone and Android? +Yes! It works on virtually all smartphones made after 2018 that have a camera. + +### Can I create one for a 5GHz network? +Yes! The process is exactly the same. Just use the correct 5GHz network name. + +### Is it safe? +Yes! The QR Code simply makes it easier to enter the data. It is just as safe as sharing the password verbally or in writing. + +### Can I edit it after it's created? +You cannot edit the QR Code after it's generated. If you change your WiFi password, you'll need to generate a new QR Code. + +### How many people can use the same QR Code? +Unlimited! There is no usage limit for the QR Code. + +## Conclusion + +Creating a WiFi QR Code is quick, easy and completely free at QR Rapido! In less than 2 minutes you can: + +✅ Generate your custom QR Code +✅ Share your network effortlessly +✅ Provide a better experience for guests +✅ Demonstrate professionalism + +**Try it now**: [Create my Free WiFi QR Code](/) + +--- + +**Liked this tutorial?** Share it with friends who also want to make WiFi access easier! Also explore our other QR Code types for different needs. + +## Other Useful Tutorials + +- How to create a QR Code for WhatsApp +- QR Code for Digital Business Cards +- How to create a QR Code for URLs and Links +- Advanced QR Code customization + +**Create your free WiFi QR Code now and transform your guests' experience!** 🚀📱 diff --git a/Content/Tutoriais/qr-code-para-corretores-imoveis.en.md b/Content/Tutoriais/qr-code-para-corretores-imoveis.en.md new file mode 100644 index 0000000..d167359 --- /dev/null +++ b/Content/Tutoriais/qr-code-para-corretores-imoveis.en.md @@ -0,0 +1,630 @@ +--- +title: "QR Code for Real Estate Agents: Complete Guide for Labels and Flyers" +description: "Discover how to use QR Codes on adhesive labels, signs and real estate flyers. Increase your sales with free and professional technology." +keywords: "qr code real estate agent, realtor label, real estate qr code, adhesive labels realtors, promote real estate agent, qr code for sale sign" +author: "QR Rapido" +date: 2025-10-10 +lastmod: 2025-10-10 +image: "/images/tutoriais/qr-code-corretor-imoveis-hero.jpg" +--- + +# QR Code for Real Estate Agents: Complete Guide for Labels and Flyers + +If you are a real estate agent, you know that **capturing qualified leads** is essential to closing deals. Imagine turning your "For Sale" signs, flyers and adhesive labels into interactive tools that connect clients directly to your WhatsApp, property listing or digital business card — all of this **for free** with QR Codes! + +In this complete guide, you will learn how to create and apply professional QR Codes on real estate materials, increasing your conversions and standing out from the competition. + +## Why Real Estate Agents Should Use QR Codes? + +### **Proven Advantages** + +- ✅ **24/7 Lead Generation**: Your sign works for you even while you sleep +- ✅ **Instant Contact**: Client scans and is already on your WhatsApp +- ✅ **Zero Typing**: Eliminates errors when noting numbers +- ✅ **Tracking**: Know how many people were interested +- ✅ **Professionalism**: Demonstrates modernity and innovation +- ✅ **Zero Cost**: Generate unlimited QR Codes for free +- ✅ **Virtual Tour**: Take the client inside the property virtually + +### **Market Statistics** + +According to real estate industry studies: +- **78%** of buyers research properties on their phones +- **65%** prefer contact via WhatsApp instead of a call +- **43%** scan QR Codes on property signs when they see them +- Agents who use QR Codes have **35% more monthly leads** + +--- + +## Where to Apply QR Codes in Real Estate Marketing + +### **1. "For Sale" and "For Rent" Signs** + +**The most powerful use!** The sign in front of the property is seen by hundreds of people daily. + +**What to put in the QR Code:** +- Direct link to your WhatsApp +- vCard with your complete contacts +- 360° virtual tour of the property +- Detailed property spec sheet (PDF) +- Property video on YouTube + +**Professional tip**: Add eye-catching text like: +- "Scan and schedule your visit NOW" +- "Virtual Tour - Point your camera here" +- "Direct WhatsApp to the Agent" + +### **2. Adhesive Labels and Tags** + +Small labels (2"x2" to 4"x4") are perfect for: + +**Applications:** +- Sticking on agency cars +- Fixing on property gates +- Applying to store windows +- Distributing at partner businesses +- Placing in building elevators + +**Advantages:** +- Low printing cost +- Easy mass distribution +- Can be replaced quickly +- Great for promotional actions + +### **3. Flyers and Leaflets** + +Transform paper flyers into digital tools! + +**Where to apply:** +- Top right corner (area of greatest attention) +- Center, if it's the main focus +- Back, with highlighted call to action + +**Recommended content:** +- Digital property portfolio +- Registration form +- Mortgage calculator +- Complete list of available properties + +### **4. Brochures and Real Estate Magazines** + +Premium printed materials deserve strategic QR Codes. + +**Ideal use:** +- 1 QR per featured property +- QR on the cover for the complete portfolio +- QR on the back cover with your contacts +- QR on each page with more information + +### **5. Business Cards** + +The classic never goes out of style, but can be enhanced! + +**QR Code on the card allows:** +- Save contact automatically (vCard) +- View online portfolio +- Schedule a meeting directly in the calendar +- Send message via WhatsApp + +### **6. Email Signature** + +Every email you send is an opportunity! + +**Include QR Code for:** +- Your complete vCard +- Latest property launch +- Free property valuation +- Scheduling visits + +--- + +## Step by Step: How to Create QR Codes for Agents + +Here's how to create **3 essential QR Code types** for real estate agents: + +### **Type 1: vCard QR Code (Digital Business Card)** + +Perfect for: Business cards, email signature, badges + +#### Step 1: Select "Business Card" + +Access the generator and choose the **Business Card** option from the type menu. + +#### Step 2: Fill in Your Professional Data + +**Required information:** +- **Full name**: John Smith +- **Title**: Real Estate Agent License #12345 +- **Company**: Success Real Estate +- **Phone**: +1 555 987-6543 +- **Email**: john.smith@realestate.com +- **Website**: www.johnsmith.realestate +- **Address**: 1000 Main St - New York, NY + +**Strategic optional fields:** +- WhatsApp Business +- Professional Instagram +- LinkedIn +- YouTube channel with virtual tours + +#### Step 3: Generate and Download + +Click **"Generate QR Code"** and download in high resolution. + +**Where to use this QR:** +- Adhesive labels on the car +- Business cards +- Email signature +- Professional badge + +--- + +### **Type 2: Direct WhatsApp QR Code** + +Perfect for: Property signs, flyers, ads + +#### Step 1: Select "WhatsApp" + +In the generator, choose the **WhatsApp** option (or SMS if you prefer). + +#### Step 2: Set Up the Pre-Written Message + +**Example of an effective message:** + +``` +Hi! I saw the property sign at [STREET/NEIGHBORHOOD] and would like to schedule a visit. Can you send me more information? +``` + +**Why a pre-written message works:** +- Client doesn't need to think about what to write +- You already know which property they're talking about +- Increases conversion rate by 80% + +#### Step 3: Customize for Each Property + +**Important tip**: Create different QR Codes for each property! + +Example for a 3-bedroom apartment in downtown: +``` +Hi! I saw the sign for the 3-bedroom Apartment downtown (Ref: APT-001). I'd like to know more details and schedule a visit. +``` + +**Advantage**: You already know exactly which property the client wants to see! + +--- + +### **Type 3: URL QR Code (Virtual Tour / Spec Sheet)** + +Perfect for: High-end properties, launches, rural properties + +#### Step 1: Prepare the Digital Content + +Before creating the QR, you need to have: + +**Option A - Virtual Tour:** +- YouTube video of the property +- 360° tour (Google Street View, Matterport) +- Photo gallery on Instagram/Facebook + +**Option B - Landing Page:** +- Complete property spec sheet +- High-resolution photos +- Location map +- Mortgage calculator +- Interest registration form + +#### Step 2: Shorten the URL (Important!) + +Use URL shorteners like: +- bit.ly +- tinyurl.com + +**Example:** +- ❌ Long URL: `https://www.myrealestate.com/properties/3-bedroom-downtown-ref-apt001?utm_source=sign` +- ✅ Short URL: `bit.ly/apt-downtown-001` + +**Advantage of short URL**: Generates simpler QR Code that's easier to scan + +#### Step 3: Create the QR Code + +Paste the short URL into the **URL/Link** field and generate the code. + +--- + +## How to Customize Your QR Code Professionally + +### **Strategic Color Choices** + +**For Traditional Real Estate Agencies:** +- Navy blue + White (trust, seriousness) +- Black + Gold (luxury, exclusivity) +- Dark green + White (growth, stability) + +**For Modern Real Estate Agencies:** +- Orange + White (energy, innovation) +- Purple + White (creativity, differentiation) +- Red + White (urgency, action) + +**Golden rule**: Always maintain high contrast between primary color and background! + +### **Recommended Sizes by Application** + +**Street signs (2-15 ft distance):** +- QR Code: 6"x6" or larger +- Resolution: 500px minimum + +**Letter/A4 flyers:** +- QR Code: 1.5"x1.5" to 2.5"x2.5" +- Resolution: 300px + +**Adhesive labels:** +- QR Code: 2"x2" (sticker size) +- Resolution: 300px + +**Business cards:** +- QR Code: 1"x1" +- Resolution: 200px + +### **Add Calls to Action (CTA)** + +Never place a QR Code alone! Add attractive text: + +**Effective examples:** +- 📱 "Point your camera and message me on WhatsApp" +- 🏠 "360° Virtual Tour - Scan Here" +- 💬 "Schedule Your Visit Now" +- 📋 "See Full Photos and Details" +- 🎯 "Save My Contact Automatically" + +--- + +## Advanced Strategies for Agents + +### **1. Trackable (Dynamic) QR Codes** + +Use dynamic QR Code services to: + +- Know how many people scanned +- See scan times +- Identify approximate location +- Change the destination without reprinting + +**When to use:** +- Campaigns with many printed materials +- A/B testing different approaches +- Permanent signs on properties + +### **2. Multiple QR Codes on the Same Sign** + +Large sign? Use 2-3 different QR Codes! + +**Example of a complete sign:** +- **QR 1** (top): "Message on WhatsApp" +- **QR 2** (center): "360° Virtual Tour" +- **QR 3** (bottom): "Save My Contact" + +**Advantage**: Client chooses the action they prefer + +### **3. QR Code + Augmented Reality** + +For launches and developments: + +- QR Code leads to AR app +- Client points phone and sees the finished building +- Views decorated apartment +- Extremely impactful! + +### **4. Seasonal Campaigns** + +Create specific QR Codes for: + +- **January**: "Plan the New Year - Buy Your Property" +- **June**: "Summer Vacation in Your New Home" +- **November**: "Black Friday Real Estate Sale" +- **December**: "Start the Year in Your Own Home" + +### **5. Strategic Partnerships** + +Distribute labels with QR Code at: + +- Building materials stores +- Architecture offices +- Notary offices +- Neighborhood gyms and restaurants +- Commercial buildings (bulletin boards) + +--- + +## Professional Adhesive Label Templates + +### **Template 1: Minimalist Label (2"x2")** + +``` +┌─────────────────┐ +│ [QR CODE] │ +│ │ +│ John Smith │ +│ License #12345 │ +│ (555) 987-6543 │ +└─────────────────┘ +``` + +### **Template 2: Highlighted Label (3"x3")** + +``` +┌─────────────────────┐ +│ SELL YOUR PROPERTY │ +│ HASSLE-FREE │ +│ │ +│ [QR CODE] │ +│ │ +│ "Scan and talk │ +│ directly to me" │ +│ │ +│ John Smith │ +│ Licensed Agent │ +└─────────────────────┘ +``` + +### **Template 3: Virtual Tour Label (4"x4")** + +``` +┌───────────────────────────┐ +│ 360° VIRTUAL TOUR │ +│ Visit this property │ +│ from your couch! │ +│ │ +│ [LARGE QR CODE] │ +│ │ +│ 📱 Point your camera │ +│ │ +│ Success Real Estate │ +│ (555) 987-6543 │ +└───────────────────────────┘ +``` + +--- + +## Best Printing Practices + +### **Recommended Materials** + +**For outdoor signs:** +- **UV-resistant vinyl** +- **UV printed banner** +- **ACM (Aluminum Composite)** + +Durability: 2-3 years in direct sunlight + +**For adhesive labels:** +- **BOPP (Polypropylene) paper** +- **Glossy white vinyl** +- **Coated paper with lamination** + +Durability: 6-12 months + +**For flyers:** +- **Coated 80lb or 100lb stock** +- **Spot UV varnish on QR Code** (for emphasis) + +### **Testing Before Mass Printing** + +⚠️ **ALWAYS do this:** + +1. Print 1 sample at actual size +2. Test with 5 different phones +3. Test at different distances +4. Test in low light +5. Only then print large quantities + +**Phones to test:** +- iPhone (updated iOS) +- Samsung (Android) +- Other Android brands (popular models) + +### **Where to Print** + +**Quick print shops:** +- Adhesive labels: 100 units for $15-50 +- A5 flyers: 1000 units for $50-150 + +**Online (cheaper):** +- Vistaprint +- Overnight Prints +- Sticker Mule + +**Tip**: Get quotes from 3 different places! + +--- + +## Common Mistakes Agents Should Avoid + +### ❌ **Mistake 1: QR Code Too Small** + +**Problem**: On street signs viewed from a distance, a small QR won't work + +**Solution**: Minimum 6"x6" for outdoor signs + +### ❌ **Mistake 2: Colors with Low Contrast** + +**Problem**: Yellow QR on white background won't scan + +**Solution**: Always use dark colors on light backgrounds (or vice versa) + +### ❌ **Mistake 3: Not Testing Before Printing** + +**Problem**: Print 1000 flyers and discover the QR doesn't work + +**Solution**: Always test with a pilot print + +### ❌ **Mistake 4: Broken or Temporary URL** + +**Problem**: Property link expires, QR becomes useless + +**Solution**: Use permanent URLs or editable dynamic QR + +### ❌ **Mistake 5: No Usage Instructions** + +**Problem**: Older person doesn't know what to do with the QR + +**Solution**: Add "Point your phone camera here" + +### ❌ **Mistake 6: Single QR Code for All Properties** + +**Problem**: Don't know which property generated the lead + +**Solution**: Create a specific QR for each property + +### ❌ **Mistake 7: Low Quality Materials** + +**Problem**: Label fades in 1 month in the sun + +**Solution**: Invest in UV-resistant materials + +--- + +## Success Stories + +### **Case 1: Agent in New York** + +**Strategy**: Placed QR Code on all 15 property signs + +**Results:** +- 127 scans in the first month +- 34 WhatsApp conversations +- 8 visits scheduled +- 2 sales closed + +**ROI**: Invested $150 in labels, earned $28,000 in commissions + +### **Case 2: Real Estate Agency** + +**Strategy**: Flyers with QR for virtual tour of new development + +**Results:** +- 5,000 flyers distributed +- 890 virtual tour accesses +- 156 registered interested buyers +- 23 apartments sold in pre-sale + +### **Case 3: Independent Agent** + +**Strategy**: Adhesive labels at partner businesses + +**Results:** +- 200 labels distributed at 40 locations +- 67 new contacts in 3 months +- 12 property valuations scheduled +- 3 exclusive listings captured + +--- + +## Complementary Tools + +### **Digital Content Creation** + +- **Canva**: Create label and flyer layouts +- **Matterport**: 360° virtual tours +- **YouTube**: Host property videos +- **Google Drive**: Property spec sheet PDFs + +### **Lead Management** + +- **Bitly**: Shorten URLs and track clicks +- **Google Analytics**: Monitor traffic +- **WhatsApp Business**: Organize conversations +- **CRM tools**: Real estate CRM solutions + +### **Online Printing** + +- **Vistaprint**: Labels and flyers +- **Overnight Prints**: Signs and banners +- **Sticker Mule**: Premium stickers + +--- + +## Frequently Asked Questions + +### **Do I need to pay to create a QR Code?** + +No! At QR Rapido you create unlimited QR Codes for free. You only pay if you want premium features like advanced tracking. + +### **Does the QR Code work forever?** + +Static QR Codes (free) work forever, but cannot be edited. Dynamic QR Codes (paid) can be edited even after printing. + +### **Which QR type to use on property signs?** + +I recommend **WhatsApp** with a pre-written message. That way the client already starts the conversation knowing which property they're asking about. + +### **Can I put the agency logo on the QR?** + +Yes, but carefully! Logos that are too large can make it harder to read. Keep the logo small (maximum 20% of the QR). + +### **How many people scan QR Codes on signs?** + +According to research, between 5-15% of people who see the sign scan the QR. In busy areas, this can generate dozens of leads per month. + +### **Does the QR Code work at night?** + +Yes, as long as there is some lighting. For best results, illuminate the sign. + +### **Can I use the same QR on multiple materials?** + +You can, but it's not recommended. Create different QR Codes to know where each lead came from (sign, flyer, label, etc.). + +### **How do I know if the QR is working?** + +Test immediately after creating! Use your own phone camera and at least 2 other people's phones to make sure. + +--- + +## Professional Agent Checklist + +Before printing, verify: + +- [ ] QR Code tested on at least 3 different phones +- [ ] Appropriate size for scanning distance +- [ ] High contrast between QR and background +- [ ] Clear call to action ("Scan here") +- [ ] Visible contact information (name, license, phone) +- [ ] Short URL if using a link (easier to scan) +- [ ] Durable printing material (especially for outdoor use) +- [ ] Safety margin around the QR (minimum 0.4") + +--- + +## Conclusion + +QR Codes are the **cheapest and most effective tool** for modern agents to capture qualified leads. With an investment of less than $100 in labels and flyers, you can: + +✅ Capture leads 24 hours a day +✅ Facilitate instant contact via WhatsApp +✅ Show impressive virtual tours +✅ Track which materials generate the most results +✅ Stand out from the conservative competition + +**The real estate market is increasingly digital. Those who don't adapt get left behind.** + +--- + +## Get Started Now! + +**Create your first real estate agent QR Code for free:** + +1. [Generate WhatsApp QR Code](/) - For property signs +2. [Generate vCard QR Code](/) - For business cards +3. [Generate URL QR Code](/) - For virtual tours + +**Turn your signs and flyers into lead generation machines!** 🏠📱🚀 + +--- + +## Bonus Materials + +- 📋 Pre-written WhatsApp message template +- 🎨 Editable label templates +- 📊 QR Code tracking spreadsheet by property +- 🎯 Professional printing checklist + +**Want to stand out in the real estate market? Use QR Codes strategically and watch your results multiply!** diff --git a/Controllers/DevTutoriaisController.cs b/Controllers/DevTutoriaisController.cs index 23d7592..cd5e091 100644 --- a/Controllers/DevTutoriaisController.cs +++ b/Controllers/DevTutoriaisController.cs @@ -18,6 +18,7 @@ namespace QRRapidoApp.Controllers [Route("Developer/docs")] [Route("es-PY/Developer/docs")] [Route("es/Developer/docs")] + [Route("en/Developer/docs")] public async Task Index() { var culture = GetCulture(); @@ -29,6 +30,7 @@ namespace QRRapidoApp.Controllers [Route("Developer/docs/{slug}")] [Route("es-PY/Developer/docs/{slug}")] [Route("es/Developer/docs/{slug}")] + [Route("en/Developer/docs/{slug}")] public async Task Article(string slug) { var culture = GetCulture(); @@ -57,6 +59,8 @@ namespace QRRapidoApp.Controllers if (path.StartsWith("/es-PY", StringComparison.OrdinalIgnoreCase)) return "es-PY"; if (path.StartsWith("/es/", StringComparison.OrdinalIgnoreCase) || string.Equals(path, "/es", StringComparison.OrdinalIgnoreCase)) return "es"; + if (path.StartsWith("/en/", StringComparison.OrdinalIgnoreCase) || + string.Equals(path, "/en", StringComparison.OrdinalIgnoreCase)) return "en"; return "pt-BR"; } } diff --git a/Controllers/DeveloperController.cs b/Controllers/DeveloperController.cs index 4c013e4..c3c5f04 100644 --- a/Controllers/DeveloperController.cs +++ b/Controllers/DeveloperController.cs @@ -7,6 +7,10 @@ using System.Security.Claims; namespace QRRapidoApp.Controllers { [Authorize] + [Route("Developer")] + [Route("es-PY/Developer")] + [Route("es/Developer")] + [Route("en/Developer")] public class DeveloperController : Controller { private readonly IUserService _userService; @@ -23,7 +27,7 @@ namespace QRRapidoApp.Controllers _logger = logger; } - [HttpGet] + [HttpGet("")] public async Task Index() { var userId = User.FindFirst(ClaimTypes.NameIdentifier)?.Value; @@ -36,7 +40,7 @@ namespace QRRapidoApp.Controllers return View(user); } - [HttpPost] + [HttpPost("GenerateKey")] [ValidateAntiForgeryToken] public async Task GenerateKey(string keyName) { @@ -46,7 +50,7 @@ namespace QRRapidoApp.Controllers if (string.IsNullOrWhiteSpace(keyName) || keyName.Length > 50) { TempData["Error"] = "Nome da chave inválido (máx. 50 caracteres)."; - return RedirectToAction(nameof(Index)); + return Redirect(GetDevUrl()); } var user = await _userService.GetUserAsync(userId); @@ -55,7 +59,7 @@ namespace QRRapidoApp.Controllers if (user.ApiKeys.Count(k => k.IsActive) >= 5) { TempData["Error"] = "Limite de 5 chaves ativas atingido. Revogue uma antes de criar outra."; - return RedirectToAction(nameof(Index)); + return Redirect(GetDevUrl()); } var (rawKey, prefix) = await _userService.GenerateApiKeyAsync(userId, keyName.Trim()); @@ -67,7 +71,7 @@ namespace QRRapidoApp.Controllers return RedirectToAction(nameof(Index)); } - [HttpGet] + [HttpGet("Pricing")] public async Task Pricing() { var userId = User.FindFirst(ClaimTypes.NameIdentifier)?.Value; @@ -80,7 +84,7 @@ namespace QRRapidoApp.Controllers return View(); } - [HttpPost] + [HttpPost("SubscribeApi")] [ValidateAntiForgeryToken] public async Task SubscribeApi(string planTier) { @@ -92,7 +96,7 @@ namespace QRRapidoApp.Controllers tier == ApiPlanTier.Enterprise) { TempData["Error"] = "Plano inválido selecionado."; - return RedirectToAction(nameof(Pricing)); + return Redirect(GetDevUrl("Pricing")); } try @@ -105,11 +109,11 @@ namespace QRRapidoApp.Controllers { _logger.LogError(ex, "Error creating API subscription checkout for user {UserId}", userId); TempData["Error"] = "Erro ao criar sessão de pagamento. Tente novamente."; - return RedirectToAction(nameof(Pricing)); + return Redirect(GetDevUrl("Pricing")); } } - [HttpPost] + [HttpPost("RevokeKey")] [ValidateAntiForgeryToken] public async Task RevokeKey(string prefix) { @@ -119,7 +123,7 @@ namespace QRRapidoApp.Controllers if (string.IsNullOrWhiteSpace(prefix)) { TempData["Error"] = "Chave inválida."; - return RedirectToAction(nameof(Index)); + return Redirect(GetDevUrl()); } var revoked = await _userService.RevokeApiKeyAsync(userId, prefix); @@ -142,7 +146,20 @@ namespace QRRapidoApp.Controllers if (path.StartsWith("/es-PY", StringComparison.OrdinalIgnoreCase)) return "es-PY"; if (path.StartsWith("/es/", StringComparison.OrdinalIgnoreCase) || string.Equals(path, "/es", StringComparison.OrdinalIgnoreCase)) return "es"; + if (path.StartsWith("/en/", StringComparison.OrdinalIgnoreCase) || + string.Equals(path, "/en", StringComparison.OrdinalIgnoreCase)) return "en"; return "pt-BR"; } + + private string GetDevUrl(string action = "") + { + var base_ = GetCulture() switch { + "es-PY" => "/es-PY/Developer", + "es" => "/es/Developer", + "en" => "/en/Developer", + _ => "/Developer" + }; + return string.IsNullOrEmpty(action) ? base_ : $"{base_}/{action}"; + } } } diff --git a/Controllers/HomeController.cs b/Controllers/HomeController.cs index e1a5d75..ec31f57 100644 --- a/Controllers/HomeController.cs +++ b/Controllers/HomeController.cs @@ -39,6 +39,7 @@ namespace QRRapidoApp.Controllers [HttpGet] [Route("/")] [Route("es-PY")] + [Route("en")] public async Task Index(string? qrType = null) { var userId = User?.FindFirst(ClaimTypes.NameIdentifier)?.Value; @@ -116,36 +117,44 @@ namespace QRRapidoApp.Controllers [Route("pix")] [Route("es-PY/pix")] + [Route("en/pix")] public async Task Pix() => await Index("pix"); [Route("wifi")] [Route("es-PY/wifi")] + [Route("en/wifi")] public async Task Wifi() => await Index("wifi"); [Route("vcard")] [Route("es-PY/vcard")] + [Route("en/vcard")] public async Task VCard() => await Index("vcard"); [Route("whatsapp")] [Route("es-PY/whatsapp")] + [Route("en/whatsapp")] public async Task WhatsApp() => await Index("whatsapp"); [Route("email")] [Route("es-PY/email")] + [Route("en/email")] public async Task Email() => await Index("email"); [Route("sms")] [Route("es-PY/sms")] + [Route("en/sms")] public async Task Sms() => await Index("sms"); [Route("texto")] [Route("text")] [Route("es-PY/texto")] [Route("es-PY/text")] + [Route("en/text")] public async Task Text() => await Index("text"); [Route("url")] [Route("es-PY/url")] + [Route("en/url")] public async Task UrlType() => await Index("url"); public IActionResult Privacy() diff --git a/Controllers/TutoriaisController.cs b/Controllers/TutoriaisController.cs index a097c66..fd4ad2f 100644 --- a/Controllers/TutoriaisController.cs +++ b/Controllers/TutoriaisController.cs @@ -29,9 +29,11 @@ namespace QRRapidoApp.Controllers // Portuguese: /tutoriais/{slug} (canonical, no prefix) // Spanish: /es-PY/tutoriais/{slug} + // English: /en/tutoriais/{slug} [Route("tutoriais/{slug}")] [Route("es-PY/tutoriais/{slug}")] [Route("es/tutoriais/{slug}")] + [Route("en/tutoriais/{slug}")] public async Task Article(string slug, string? culture = null) { try @@ -40,6 +42,7 @@ namespace QRRapidoApp.Controllers var reqPath = Request.Path.Value ?? ""; culture ??= reqPath.StartsWith("/es-PY", StringComparison.OrdinalIgnoreCase) ? "es-PY" : reqPath.StartsWith("/es/", StringComparison.OrdinalIgnoreCase) ? "es" + : reqPath.StartsWith("/en/", StringComparison.OrdinalIgnoreCase) ? "en" : "pt-BR"; var article = await _markdownService.GetArticleAsync(slug, culture); @@ -89,9 +92,11 @@ namespace QRRapidoApp.Controllers // Portuguese: /tutoriais (canonical, no prefix) // Spanish: /es-PY/tutoriais + // English: /en/tutoriais [Route("tutoriais")] [Route("es-PY/tutoriais")] [Route("es/tutoriais")] + [Route("en/tutoriais")] public async Task Index(string? culture = null) { try @@ -100,6 +105,7 @@ namespace QRRapidoApp.Controllers var reqPath = Request.Path.Value ?? ""; culture ??= reqPath.StartsWith("/es-PY", StringComparison.OrdinalIgnoreCase) ? "es-PY" : reqPath.StartsWith("/es/", StringComparison.OrdinalIgnoreCase) ? "es" + : reqPath.StartsWith("/en/", StringComparison.OrdinalIgnoreCase) ? "en" : "pt-BR"; var articles = await _markdownService.GetAllArticlesAsync(culture); @@ -112,9 +118,13 @@ namespace QRRapidoApp.Controllers ViewBag.UserName = User.Identity?.Name ?? ""; _adDisplayService.SetViewBagAds(ViewBag); - ViewBag.Title = culture == "pt-BR" ? "Tutoriais QR Code" : "Tutoriales Código QR"; + ViewBag.Title = culture == "pt-BR" ? "Tutoriais QR Code" + : culture == "en" ? "QR Code Tutorials" + : "Tutoriales Código QR"; ViewBag.Description = culture == "pt-BR" ? "Aprenda a criar e usar QR Codes com nossos tutoriais completos" + : culture == "en" + ? "Learn how to create and use QR Codes with our complete step-by-step tutorials" : "Aprende a crear y usar códigos QR con nuestros tutoriales completos"; ViewBag.Culture = culture; diff --git a/Filters/ApiKeyAuthorizeAttribute.cs b/Filters/ApiKeyAuthorizeAttribute.cs index 044f58c..ed3899b 100644 --- a/Filters/ApiKeyAuthorizeAttribute.cs +++ b/Filters/ApiKeyAuthorizeAttribute.cs @@ -16,6 +16,16 @@ namespace QRRapidoApp.Filters public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) { + // [AllowAnonymous] on the action bypasses this filter + var hasAllowAnonymous = context.ActionDescriptor.EndpointMetadata + .OfType() + .Any(); + if (hasAllowAnonymous) + { + await next(); + return; + } + var logger = context.HttpContext.RequestServices.GetRequiredService>(); try diff --git a/Middleware/LanguageRedirectionMiddleware.cs b/Middleware/LanguageRedirectionMiddleware.cs index 795c9c5..87a5580 100644 --- a/Middleware/LanguageRedirectionMiddleware.cs +++ b/Middleware/LanguageRedirectionMiddleware.cs @@ -10,13 +10,14 @@ namespace QRRapidoApp.Middleware /// - "/" → Retorna 200 OK em Português (canonical) /// - "/pt-BR" ou "/pt-BR/*" → Redireciona 301 para "/" ou "/*" (sem prefixo) /// - "/es-PY" ou "/es-PY/*" → Retorna 200 OK em Espanhol (mantém URL) + /// - "/en" ou "/en/*" → Retorna 200 OK em Inglês (mantém URL) /// - "/pix", "/wifi", etc. → Retorna 200 OK em Português (sem redirect) /// public class LanguageRedirectionMiddleware { private readonly RequestDelegate _next; private readonly ILogger _logger; - private readonly string[] _supportedCultures = { "pt-BR", "es-PY", "es" }; + private readonly string[] _supportedCultures = { "pt-BR", "es-PY", "es", "en" }; private const string DefaultCulture = "pt-BR"; private const string CookieName = ".AspNetCore.Culture"; @@ -84,7 +85,15 @@ namespace QRRapidoApp.Middleware return; } - // Handle aliases or unsupported cultures (e.g. /en/, /pt/) + // Supported: en (English) + if (string.Equals(firstSegment, "en", StringComparison.OrdinalIgnoreCase)) + { + SetCulture(context, "en"); + await _next(context); + return; + } + + // Handle aliases or unsupported cultures (e.g. /en-US/, /pt/) if (TryHandleCultureAliasOrUnknown(context, firstSegment, segments)) { return; @@ -108,13 +117,14 @@ namespace QRRapidoApp.Middleware { // Map known aliases to canonical forms if (string.Equals(firstSegment, "es-py", StringComparison.OrdinalIgnoreCase)) - { return RedirectToLanguage(context, "es-PY", segments); - } - // For anything else that looks like a culture (en, pt, fr, etc.) - // but isn't explicitly es-PY, we redirect to the canonical (no prefix) - // This prevents 404s for /en/, /pt-BR/ (redirects to /), etc. + if (string.Equals(firstSegment, "en-us", StringComparison.OrdinalIgnoreCase) || + string.Equals(firstSegment, "en-gb", StringComparison.OrdinalIgnoreCase)) + return RedirectToLanguage(context, "en", segments); + + // For anything else that looks like a culture (pt, fr, de, etc.) + // redirect to the canonical Portuguese URL (no prefix). return RedirectToCanonical(context, segments); } diff --git a/Program.cs b/Program.cs index 378d516..90f8b01 100644 --- a/Program.cs +++ b/Program.cs @@ -226,6 +226,7 @@ builder.Services.Configure(options => new CultureInfo("pt-BR"), new CultureInfo("es-PY"), new CultureInfo("es"), + new CultureInfo("en"), }; options.DefaultRequestCulture = new RequestCulture("pt-BR", "pt-BR"); @@ -463,7 +464,7 @@ app.MapHealthChecks("/healthcheck"); // Language routes (must be first for WEB) app.MapControllerRoute( name: "localized", - pattern: "{culture:regex(^(pt-BR|es-PY|es)$)}/{controller=Home}/{action=Index}/{id?}"); + pattern: "{culture:regex(^(pt-BR|es-PY|es|en)$)}/{controller=Home}/{action=Index}/{id?}"); app.MapControllerRoute( name: "api_v1", diff --git a/Providers/CustomRouteDataRequestCultureProvider.cs b/Providers/CustomRouteDataRequestCultureProvider.cs index 0ce8fbc..8a292b3 100644 --- a/Providers/CustomRouteDataRequestCultureProvider.cs +++ b/Providers/CustomRouteDataRequestCultureProvider.cs @@ -9,7 +9,7 @@ namespace QRRapidoApp.Providers // First check if the middleware has already determined the culture (e.g. for static routes like /es-PY/pix) if (httpContext.Items.TryGetValue("Culture", out var cultureItem) && cultureItem is string cultureFromMiddleware) { - var supportedCultures = new[] { "pt-BR", "es-PY" }; + var supportedCultures = new[] { "pt-BR", "es-PY", "en" }; if (supportedCultures.Contains(cultureFromMiddleware)) { return Task.FromResult(new ProviderCultureResult(cultureFromMiddleware, cultureFromMiddleware)); @@ -24,7 +24,7 @@ namespace QRRapidoApp.Providers if (!string.IsNullOrEmpty(culture)) { // Map the supported cultures - var supportedCultures = new[] { "pt-BR", "es-PY" }; + var supportedCultures = new[] { "pt-BR", "es-PY", "en" }; if (supportedCultures.Contains(culture)) { return Task.FromResult(new ProviderCultureResult(culture, culture)); diff --git a/Resources/SharedResource.en.resx b/Resources/SharedResource.en.resx index 70b1415..5b63abc 100644 --- a/Resources/SharedResource.en.resx +++ b/Resources/SharedResource.en.resx @@ -1,811 +1,2329 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - Generate QR codes in seconds! - - - Generate QR Code - - - QR Code Type - - - Content - - - URL/Link - - - Plain Text - - - WiFi - - - Business Card - - - SMS - - - Email - - - Dynamic QR (Premium) - - - Quick Style - - - Classic - - - Modern - - - Colorful - - - Enter your QR code content here... - - - Advanced Customization - - - Primary Color - - - Background Color - - - Size - - - Margin - - - Logo/Icon - - - Corner Style - - - Generate QR Code Rapidly - - - Preview - - - Your QR code will appear here in seconds - - - Ultra-fast generation guaranteed - - - Download PNG - - - Download SVG (Vector) - - - Download PDF - - - Save to History - - - Login to save to history - - - QR Rapido Premium - - - Tips for Faster QR - - - Short URLs generate faster - - - Less text = higher speed - - - Solid colors optimize the process - - - Smaller sizes speed up downloads - - - Login - - - Login with - - - Google - - - Microsoft - - - Unlock all premium features! - - - Premium Offer! - - - Remove ads, access detailed analytics and much more for only $12.90/month or $129.00/year. Login and subscribe now! - - - Privacy Policy - - - Back to generator - - - Generated in - - - s - - - Ultra fast generation! - - - Fast generation! - - - Normal generation - - - Generation error. Try again. - - - QR Code saved to history! - - - Create QR Code Quickly - - - Premium User Active - - - No Ads • History • Unlimited QR - - - Unlimited today - - - QR codes remaining - - - QR Code Type - - - Select type - - - URL/Link - - - Simple Text - - - Business Card - - - Dynamic QR (Premium) - - - Enter your QR code content here... - - - Content hints - - - Classic - - - Modern - - - Colorful - - - WPA netwrok (most commom) - - - WEP (muito antigo) - - - No password - - - Accelerate your productivity with the world's fastest QR generator - - - 3x faster than the competition - - - Current Status - - - You have - - - days remaining without ads. - - - Upgrade now and have premium access forever! - - - days remaining - - - The most popular plan - - - per month - - - Unlimited QR codes - - - Ultra-fast generation (0.4s) - - - No ads forever - - - Dynamic QR codes - - - Real-time analytics - - - Priority support - - - Developer API - - - Upgrade Now - - - Secure payment via Stripe - - - Cancel anytime - - - Plan Comparison - - - Feature - - - QR codes per day - - - Unlimited - - - Generation speed - - - Ads - - - No ads - - - Detailed analytics - - - Speed Demonstration - - - Competitors - - - Average time - - - 11x faster! - - - Frequently Asked Questions - - - Can I cancel anytime? - - - Yes! You can cancel your subscription at any time. There are no cancellation fees and you'll maintain premium access until the end of the already paid period. - - - What are dynamic QR codes? - - - Dynamic QR codes allow you to change the QR content after it has been created, without needing to generate a new code. Perfect for marketing campaigns and business use. - - - How does priority support work? - - - Premium users receive responses within 2 business hours via email, direct chat access and specialized technical support. - - - Payment processing error: - - - Payment processing error. Please try again. - - - Advertisement - - - ✨ Premium User - No ads! - - - Upgrade to Premium and remove ads! - - - Premium: No ads + History + Unlimited QR - - - Login with your account and get: - - - 30 days without ads - - - 50 QR codes/day - - - QR code history - - - Login with Google - - - Login with Microsoft - - - Special Offer! - - - By logging in, you automatically get - - - and can generate up to - - - for free. - - - We don't register you without your permission. - - - Privacy Policy - - - Payment successful! - - - Back to Home - - - Payment canceled. - - - View Plans - - - Unlock the Full Power of QRRapido - - - Unlimited access, no ads and exclusive features for maximum productivity. - - - Monthly Plan - - - Ideal to start exploring premium features. - - - Subscribe Now - - - Annual Plan - - - Recommended - - - /year - - - Save $ - - - Best value for frequent users. - - - Subscribe to Annual Plan - - - All plans include: - - - Redirecting... - - - An error occurred while initializing payment. Please try again. - - - Your generated QR codes are saved here for future download - - - Generate New QR Code - - - Type: - - - Created on: - - - Showing the 50 most recent QR codes. Older ones are automatically removed. - - - No QR Code found - - - When you generate QR codes while logged in, they will appear here for future download. - - - Generate First QR Code - - - Error regenerating QR Code. Please try again. - - - Small (200px) - - - Medium (300px) - - - Large (500px) - - - XL (800px) - - - Minimal - - - Large - - - Logo/Icon - - - PNG, JPG up to 2MB - - - Border Style - - - Square - - - Rounded - - - Circular - - - Leaf - - - Generate QR Code Quickly - - - Generating... - - - Availability - - - QRs generated today - - - Your QR code will appear here in seconds - - - Ultra-fast generation guaranteed - - - Download SVG (Vector) - - - Share QR Code - - - Share (System) - - - to save to history - - - Priority generation (0.4s) - - - Accelerate for $19.90/month - - - First, choose the QR Code type - - - 🌐 To generate QR for URL, enter the complete address (ex: https://google.com) - - - 👤 For business card, fill in name, phone and email in the fields below - - - 📶 For WiFi, enter network name, password and security type - - - 💬 For SMS, enter recipient number and message - - - 📧 For email, fill in recipient, subject and message (optional) - - - 📝 For free text, enter any content you want - - - Tips for Faster QR - - - Short URLs generate faster - - - Less text = higher speed - - - Solid colors optimize the process - - - Smaller sizes accelerate download - - - Why is QR Rapido faster? - - - Comparison with other popular generators - - - Optimized for speed - - - Competitor A - - - Traditional generator - - - Competitor B - - - Heavy interface - - - Competitor C - - - Many ads - - - average - - - Generate QR Code - - - Profile - - - History - - - Premium Active - - - Logout - - - Login = 30 days without ads! - - - The fastest QR generator on the web - - - Average of - - - 1.2 seconds - - - per QR code • Free • No registration required - - - The fastest QR code generator on the web. Free, secure and reliable. - - - Useful Links - - - Terms of Use - - - Support - - - Help - - - All rights reserved. - - - QR codes remaining today - - - Daily limit reached! Login for unlimited access. - - - Anonymous users: 3 QR codes per day - - - - Advanced customization (colors, corners) - - - Logo and image support - - - Unlimited history and downloads - - - QR code scan counter - - - Three QR code styles - - - Enable scan counter - - - QR code will use redirect URL to count scans - - - Content produced by JobMaker. Specialist in system integrations and automation. - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Generate QR codes in seconds! + + + Generate QR Code + + + QR Code Type + + + Content + + + URL/Link + + + Plain Text + + + WiFi + + + Business Card + + + SMS + + + Email + + + Dynamic QR (Premium) + + + Quick Style + + + Classic + + + Modern + + + Colorful + + + Enter your QR code content here... + + + Advanced Customization + + + Primary Color + + + Background Color + + + Size + + + Margin + + + Logo/Icon + + + Corner Style + + + Generate QR Code Rapidly + + + Preview + + + Your QR code will appear here in seconds + + + Ultra-fast generation guaranteed + + + Download PNG + + + Download SVG (Vector) + + + Download PDF + + + Save to History + + + Login to save to history + + + QR Rapido Premium + + + Tips for Faster QR + + + Short URLs generate faster + + + Less text = higher speed + + + Solid colors optimize the process + + + Smaller sizes speed up downloads + + + Login + + + Login with + + + Google + + + Microsoft + + + Unlock all premium features! + + + Premium Offer! + + + Remove ads, access detailed analytics and much more for only $12.90/month or $129.00/year. Login and subscribe now! + + + Privacy Policy + + + Back to generator + + + Generated in + + + s + + + Ultra fast generation! + + + Fast generation! + + + Normal generation + + + Generation error. Try again. + + + QR Code saved to history! + + + Create QR Code Quickly + + + Premium User Active + + + No Ads • History • Unlimited QR + + + Unlimited today + + + QR codes remaining + + + QR Code Type + + + Select type + + + URL/Link + + + Simple Text + + + Business Card + + + Dynamic QR (Premium) + + + Enter your QR code content here... + + + Content hints + + + Classic + + + Modern + + + Colorful + + + WPA netwrok (most commom) + + + WEP (muito antigo) + + + No password + + + Accelerate your productivity with the world's fastest QR generator + + + 3x faster than the competition + + + Current Status + + + You have + + + days remaining without ads. + + + Upgrade now and have premium access forever! + + + days remaining + + + The most popular plan + + + per month + + + Unlimited QR codes + + + Ultra-fast generation (0.4s) + + + No ads forever + + + Dynamic QR codes + + + Real-time analytics + + + Priority support + + + Developer API + + + Upgrade Now + + + Secure payment via Stripe + + + Cancel anytime + + + Plan Comparison + + + Feature + + + QR codes per day + + + Unlimited + + + Generation speed + + + Ads + + + No ads + + + Detailed analytics + + + Speed Demonstration + + + Competitors + + + Average time + + + 11x faster! + + + Frequently Asked Questions + + + Can I cancel anytime? + + + Yes! You can cancel your subscription at any time. There are no cancellation fees and you'll maintain premium access until the end of the already paid period. + + + What are dynamic QR codes? + + + Dynamic QR codes allow you to change the QR content after it has been created, without needing to generate a new code. Perfect for marketing campaigns and business use. + + + How does priority support work? + + + Premium users receive responses within 2 business hours via email, direct chat access and specialized technical support. + + + Payment processing error: + + + Payment processing error. Please try again. + + + Advertisement + + + ✨ Premium User - No ads! + + + Upgrade to Premium and remove ads! + + + Premium: No ads + History + Unlimited QR + + + Login with your account and get: + + + 30 days without ads + + + 50 QR codes/day + + + QR code history + + + Login with Google + + + Login with Microsoft + + + Special Offer! + + + By logging in, you automatically get + + + and can generate up to + + + for free. + + + We don't register you without your permission. + + + Privacy Policy + + + Payment successful! + + + Back to Home + + + Payment canceled. + + + View Plans + + + Unlock the Full Power of QRRapido + + + Unlimited access, no ads and exclusive features for maximum productivity. + + + Monthly Plan + + + Ideal to start exploring premium features. + + + Subscribe Now + + + Annual Plan + + + Recommended + + + /year + + + Save $ + + + Best value for frequent users. + + + Subscribe to Annual Plan + + + All plans include: + + + Redirecting... + + + An error occurred while initializing payment. Please try again. + + + Your generated QR codes are saved here for future download + + + Generate New QR Code + + + Type: + + + Created on: + + + Showing the 50 most recent QR codes. Older ones are automatically removed. + + + No QR Code found + + + When you generate QR codes while logged in, they will appear here for future download. + + + Generate First QR Code + + + Error regenerating QR Code. Please try again. + + + Small (200px) + + + Medium (300px) + + + Large (500px) + + + XL (800px) + + + Minimal + + + Large + + + Logo/Icon + + + PNG, JPG up to 2MB + + + Border Style + + + Square + + + Rounded + + + Circular + + + Leaf + + + Generate QR Code Quickly + + + Generating... + + + Availability + + + QRs generated today + + + Your QR code will appear here in seconds + + + Ultra-fast generation guaranteed + + + Download SVG (Vector) + + + Share QR Code + + + Share (System) + + + to save to history + + + Priority generation (0.4s) + + + Accelerate for $19.90/month + + + First, choose the QR Code type + + + 🌐 To generate QR for URL, enter the complete address (ex: https://google.com) + + + 👤 For business card, fill in name, phone and email in the fields below + + + 📶 For WiFi, enter network name, password and security type + + + 💬 For SMS, enter recipient number and message + + + 📧 For email, fill in recipient, subject and message (optional) + + + 📝 For free text, enter any content you want + + + Tips for Faster QR + + + Short URLs generate faster + + + Less text = higher speed + + + Solid colors optimize the process + + + Smaller sizes accelerate download + + + Why is QR Rapido faster? + + + Comparison with other popular generators + + + Optimized for speed + + + Competitor A + + + Traditional generator + + + Competitor B + + + Heavy interface + + + Competitor C + + + Many ads + + + average + + + Generate QR Code + + + Profile + + + History + + + Premium Active + + + Logout + + + Login = 30 days without ads! + + + The fastest QR generator on the web + + + Average of + + + 1.2 seconds + + + per QR code • Free • No registration required + + + The fastest QR code generator on the web. Free, secure and reliable. + + + Useful Links + + + Terms of Use + + + Support + + + Help + + + All rights reserved. + + + QR codes remaining today + + + Daily limit reached! Login for unlimited access. + + + Anonymous users: 3 QR codes per day + + + + Advanced customization (colors, corners) + + + Logo and image support + + + Unlimited history and downloads + + + QR code scan counter + + + Three QR code styles + + + Enable scan counter + + + QR code will use redirect URL to count scans + + + Content produced by JobMaker. Specialist in system integrations and automation. + + + + PIX + + + Create a static PIX QR Code to receive instant payments. Works with any banking app. + + + PIX Key + + + Key Type + + + Phone + + + Random + + + Enter your key + + + Beneficiary Name + + + Beneficiary City + + + Amount (Optional) + + + Description (Optional) + + + Transaction ID (TxID) - Optional + + + Select "PIX" from the menu + + + Enter your PIX Key, Name and City (Required) + + + Set an amount if you want to receive a fixed value + + + Receive payments at physical stores + + + Donations and fundraising + + + Always test the QR Code by transferring a small amount first + + + Generated PIX Payload + + + 💸 For PIX, fill in the key, name and city of the recipient + + + + ✅ Content added! + + + Advanced options are available below. Click "Generate QR Code" when ready. + + + ✨ Ready to generate! + + + + Tools + + + Home + + + How to Use + + + About + + + Contact + + + + Content is required + + + Content too long. Maximum 4000 characters. + + + Custom corner styles are exclusive to the Premium plan. Upgrade to use this feature. + + + QR code limit reached + + + Custom logo is exclusive to the Premium plan. Upgrade to use this feature. + + + Logo too large. Maximum 2MB. + + + Invalid format. Use PNG or JPG. + + + User Profile + + + QR Code History + + + Error saving to history. + + + Feature not available + + + Error sharing. Try another method. + + + Link copied to clipboard! + + + Enter QR code content + + + Content must be at least 3 characters + + + VCard validation error: + + + QR Code generated with QR Rapido - the fastest generator on the web! + + + QR Rapido: Generate QR codes in seconds! Ultra-fast generator in Portuguese, Spanish and English. Free, no registration required. No daily limit after login. + + + Logo not provided + + + Logo too small. Minimum 32x32 pixels. + + + Invalid image format + + + Error processing logo. + + + + Delete QR Code + + + Confirm Deletion + + + Are you sure you want to delete this QR code from your history? + + + Yes + + + No + + + QR Code deleted successfully! + + + Error deleting QR code. Please try again. + + + Deleting + + + + Privacy Policy - QR Rapido + + + Learn about our privacy policy and how we protect your personal data at QR Rapido. + + + Last updated + + + This Privacy Policy describes how QR Rapido ("we", "our" or "us") collects, uses and protects the information you provide when using our QR code generation service. + + + 1. Data Collection + + + We collect the following information: + +• Authentication data via Google/Microsoft (name, email, profile photo) +• Content of generated QR codes (only for logged-in users who choose to save to history) +• Anonymous usage data and statistics to improve our service +• Payment information processed via Stripe (we do not store card data) + + + 2. Data Usage + + + We use your data to: + +• Provide and improve our QR code generation service +• Maintain your QR code history (only if you choose to save) +• Process premium subscription payments +• Send service-related communications +• Comply with applicable legal obligations + + + 3. Data Protection + + + We implement appropriate technical and organizational security measures to protect your personal data against unauthorized access, alteration, disclosure or destruction, including: + +• SSL/TLS encryption on all communications +• Secure storage on protected servers +• Restricted access control to data +• Continuous security monitoring + + + 4. Data Sharing + + + We do not sell, rent or share your personal data with third parties, except: + +• With essential service providers (Google, Microsoft, Stripe) for authentication and payments +• When required by law or court order +• To protect our legal rights and user security + + + 5. Your Rights + + + Under applicable data protection laws, you have the right to: + +• Access your personal data +• Correct incomplete or incorrect data +• Request deletion of unnecessary data +• Withdraw consent for data processing +• Data portability + + + 6. Cookies and Similar Technologies + + + We use essential cookies for site functionality and traffic analysis via Google Analytics. You can manage your cookie preferences in your browser settings. + + + 7. Contact + + + For questions about this Privacy Policy or to exercise your rights, contact us at: contato@qrrapido.site + + + + Terms of Use - QR Rapido + + + Read the terms and conditions of use for QR Rapido, the fastest QR code generator on the web. + + + Last updated + + + These Terms of Use ("Terms") govern the use of the QR Rapido service ("Service") provided by our company ("we", "our" or "us"). By using our Service, you agree to these Terms. + + + 1. Acceptance of Terms + + + By accessing and using QR Rapido, you declare that you are at least 18 years of age or have parental/guardian authorization, and agree to comply with these Terms and all applicable laws. + + + 2. Service Description + + + QR Rapido is a free online QR code generation service that offers: + +• Fast QR code generation for various types of content +• Free version with daily limits +• Premium plan with advanced and unlimited features +• Code history for registered users + + + 3. User Responsibilities + + + You agree to: + +• Use the service only for legal and ethical purposes +• Not generate QR codes with offensive, illegal content or content that infringes third-party rights +• Not attempt to compromise the security or availability of the service +• Maintain the confidentiality of your access credentials + + + 4. Prohibited Uses + + + It is prohibited to use the service for: + +• Spreading malware, phishing or malicious links +• Copyright or intellectual property infringement +• Spam, harassment or fraudulent activities +• Activities that violate applicable laws + + + 5. Intellectual Property + + + All rights to the software, design, brand and content of QR Rapido belong to our company. The QR codes you generate are your property, but you grant us a license to store them as necessary to provide the service. + + + 6. Service Limitations + + + • Free users have a daily QR code limit +• We reserve the right to temporarily modify or discontinue the service +• We do not guarantee 100% uptime +• We may implement technical measures to prevent abuse + + + 7. Payments and Subscriptions + + + • Premium subscriptions are securely processed via Stripe +• Payments recur monthly until cancellation +• You can cancel your subscription at any time through your profile, with no penalties or additional fees +• You have a 7-day right of withdrawal for a full refund +• After cancellation, you retain Premium access until the end of the already paid period +• No proportional refund for cancellations after the 7-day period +• Prices may change with 30 days advance notice + + + 8. Limitation of Liability + + + The service is provided "as is". We are not responsible for: + +• Direct or indirect damages arising from use of the service +• Data loss or business interruption +• Improper use of QR codes generated by third parties +• Content accessed through QR codes + + + 9. Term Modifications + + + We may update these Terms periodically. Significant changes will be communicated by email or notice on the site. Continued use after changes constitutes acceptance of the new Terms. + + + 10. Applicable Law + + + These Terms are governed by applicable laws. Disputes will be resolved in competent courts, without prejudice to your right to access consumer protection bodies. + + + 11. Contact + + + For questions about these Terms of Use, contact us: contato@qrrapido.site + + + + Cookie Usage + + + We use cookies to improve your experience and analyze site traffic. By continuing to browse, you agree to the use of cookies. + + + Accept All + + + Essential Only + + + Learn More + + + + About QR Rapido - The Fastest Generator on the Web + + + Learn about QR Rapido, our mission and the technology that makes our QR code generator the fastest on the web. + + + Contact - QR Rapido Support + + + Contact our support team, request custom development or get answers to your questions about QR Rapido. + + + Frequently Asked Questions - QR Rapido + + + Find answers to the most common questions about QR code generation, premium features and usage tips. + + + How to Use - Complete Guide to QR Rapido + + + Learn to use all QR Rapido features with our complete step-by-step guide. + + + + About QR Rapido + + + The fastest and most reliable QR code generator on the web + + + Developed by JobMaker + + + QR Rapido is a JobMaker project, a company specialized in software development and innovative technology solutions. + + + Our team combines technical expertise with a focus on user experience to create tools that truly make a difference. + + + Location + + + São Bernardo do Campo, São Paulo - Brazil + + + Specialization + + + Web Development, APIs, Artificial Intelligence and Custom Systems + + + Enterprise Solutions Experts + + + We develop custom systems for companies that need performance, reliability and scalability. + + + Our Mission + + + Create technological tools that simplify everyday life for people and businesses, without compromising quality or speed. + + + Why did we create QR Rapido? + + + We noticed that existing QR code generators were slow, full of ads and had confusing interfaces. We decided to create a truly fast, clean and easy-to-use solution. + + + Technology Stack + + + Built with modern technologies for maximum performance + + + Backend: ASP.NET Core 8, C# + + + Database: MongoDB with advanced optimizations + + + Frontend: HTML5, CSS3, JavaScript, Bootstrap + + + Hosting: Cloud infrastructure with global CDN for maximum speed + + + Guaranteed High Performance + + + Why choose QR Rapido? + + + Ultra-Fast Speed + + + Average generation of 0.8 seconds, up to 11x faster than the competition + + + Secure and Reliable + + + Your data is protected and never shared with third parties + + + 100% Responsive + + + Works perfectly on any device: desktop, tablet or mobile + + + Multilingual + + + Available in Brazilian Portuguese, Paraguayan Spanish and English + + + Privacy First + + + We do not store QR code content from anonymous users + + + Made with Care + + + Every detail was designed to offer the best possible experience + + + Need Custom Development? + + + JobMaker also offers custom system development for businesses + + + Enterprise Systems with AI + + + Scalable High-Performance Solutions + + + Visit JobMaker + + + Discover our other projects and development services + + + + Contact Us + + + We are here to help you with any questions or needs + + + QR Rapido Support + + + contato@qrrapido.site + + + Response time: 24-48 hours + + + Professional Projects + + + Custom Development + + + For enterprise projects, custom system development or advanced integrations + + + Contact JobMaker + + + How can we help? + + + Bug reports or issues + + + Feature suggestions + + + Premium Support (paid users) + + + Talk to us! + + + Choose how you prefer to talk to our team: + + + Chat on Telegram + + + Send a form + + + Rate our service + + + How do you rate your experience? + + + Your name + + + Enter your name + + + Your email + + + Your comment + + + Tell us more about your experience... + + + Submit Rating + + + Thank you for your rating! Your feedback is very important to us. + + + optional + + + Premium Support Contact + + + Talk to our premium team + + + Fill in your details and we will get back to you as soon as possible. + + + Your name + + + What should we call you? + + + Your email + + + you@example.com + + + Your message + + + Tell us how we can help... + + + Preferred contact channel + + + Telegram + + + Email + + + Phone / WhatsApp + + + Send message + + + We will only use your information to respond to your request. Messages are processed via Formspree. + + + Professional Services + + + Custom system development + + + Artificial Intelligence integration + + + Enterprise technology consulting + + + Technical audits and optimization + + + Our Location + + + São Bernardo do Campo, São Paulo, Brazil + + + Response Times + + + Custom projects: 2-4 business hours + + + Visit our website + + + Premium support: up to 2 business hours + + + Quick Links + + + Before contacting us + + + Check if your question is already answered in our FAQ + + + Check FAQ + + + + Frequently Asked Questions + + + Find answers to the most common questions about QR Rapido + + + Search FAQ + + + Type your question or keyword... + + + General Questions + + + Do QR codes expire? + + + Static QR codes (like the ones generated for free) never expire. They will work forever, even if our site goes offline. + + + Dynamic QR codes (premium) can be deactivated or modified through the control panel. + + + For maximum durability, always choose static QR codes for permanent uses. + + + What is the ideal size for printing a QR code? + + + The ideal size depends on the reading distance: + + + 0.8" x 0.8" to 1.2" x 1.2" + + + Business cards, small labels (close reading) + + + 2" x 2" to 3" x 3" + + + Flyers, menus, promotional materials + + + 6" x 6" or larger + + + Posters, billboards, distance reading + + + Always test the printed QR code before final distribution. + + + How to test if my QR code is working? + + + Test with different devices and applications: + + + Android: Native camera (Android 8+) + + + Android: Google Lens + + + Android: Specific apps (QR Code Reader, etc.) + + + iOS: Native camera (iOS 11+) + + + iOS: Control Center > QR Reader + + + iOS: App Store apps + + + Are QR codes safe? + + + QR codes themselves are safe, but the content they lead to may not be. + + + Always verify the destination before clicking links or entering personal information. + + + Security tips: + + + Prefer readers that show the destination before opening + + + Be suspicious of QR codes in suspicious locations + + + Never enter passwords or personal data through suspicious QR codes + + + Technical Questions + + + What is the difference between static and dynamic QR? + + + Static QR (Free): + + + Fixed content, cannot be changed after creation + + + Works forever, even if the site goes offline + + + Does not collect usage statistics + + + Ideal for permanent information + + + Dynamic QR (Premium): + + + Content can be changed at any time + + + Collects detailed usage statistics + + + Enables advanced marketing campaigns + + + Requires connection to our servers + + + Dynamic QR codes are ideal for marketing campaigns that need to be updated. + + + Can I customize the appearance of QR codes? + + + Yes! We offer free and premium customization options: + + + Free Customization: + + + Custom colors (foreground and background) + + + Various sizes (200px to 800px) + + + Adjustable margins + + + Premium Customization: + + + Custom logos and icons in the center + + + Advanced corner styles (rounded, circular, leaf) + + + Professional pre-defined themes + + + Do QR codes work offline? + + + It depends on the type of content: + + + Works Offline: + + + Plain text + + + Contacts/vCard (saves to device) + + + WiFi settings + + + Needs Internet: + + + URLs/Links + + + Dynamic QR codes + + + Content that requires online access + + + Usage Questions + + + How to choose the best colors for my QR code? + + + Color choice directly affects readability: + + + Recommended Combinations: + + + Black on white (maximum contrast) + + + Dark blue on white + + + Dark colors on light backgrounds + + + Avoid: + + + Very similar colors (low contrast) + + + Yellow on white + + + Very vibrant colors that cause eye strain + + + Always test the QR code readability with your chosen colors before printing in bulk. + + + Why are there daily limits? + + + Anonymous Users: + + + 3 QR codes per day to prevent system abuse + + + We do not store your data or QR code content + + + Registered Users: + + + 50 QR codes per day + saved history + + + Free login via Google/Microsoft + + + Premium users have fully unlimited access. + + + Premium Questions + + + What are the benefits of the Premium plan? + + + The Premium plan offers advanced features for professional users: + + + Performance Benefits: + + + Priority ultra-fast generation (0.4s average) + + + Unlimited QR codes per day + + + No ads for maximum productivity + + + Exclusive Features: + + + Dynamic QR codes with analytics + + + Custom logos and advanced styles + + + Developer API and priority support + + + Didn't find the answer you were looking for? + + + Contact us and we will be happy to help! + + + + How to Use QR Rapido + + + Complete guide to creating professional QR codes in seconds + + + Quick Start Guide + + + 1. Choose the Type + + + Select what type of QR code you want to create: URL, text, WiFi, contact, etc. + + + 2. Enter the Content + + + Type or paste the content you want to encode in the QR code. + + + 3. Customize (Optional) + + + Adjust colors, size and other visual details of your QR code. + + + 4. Generate and Download + + + Click "Generate QR Code" and download in PNG, SVG or PDF formats. + + + Detailed Guides by Type + + + URL/Link QR Codes + + + To direct users to websites or specific pages + + + Select "URL/Link" from the type menu + + + Enter the full URL (including https://) + + + Test the URL to make sure it works + + + Customize and generate the QR code + + + Shorter URLs generate cleaner codes that are faster to read. + + + WiFi QR Codes + + + To easily share WiFi network credentials + + + Select "WiFi" from the type menu + + + Enter the network name (SSID) + + + Enter the password and select the security type + + + Generate the code - visitors can connect automatically + + + Most modern networks use WPA/WPA2. For open networks, leave the password blank. + + + Business Card QR Codes + + + To share professional contact information + + + Select "Business Card" from the type menu + + + Fill in name, company, phone and email + + + Add extra information like website and address + + + Generate the QR code for distribution + + + People can save your contact automatically + + + Compatibility + + + vCards work on most modern smartphones (iOS and Android). + + + WhatsApp QR Codes + + + To automatically start WhatsApp conversations + + + Select "WhatsApp" from the type menu + + + Enter the number with country code (e.g. 15551234567) + + + Write an initial message (optional) + + + Generate the code - people will start a chat automatically + + + Note + + + Make sure to include the country code. For US/Canada use +1, for UK use +44. + + + + Advanced Features + + + Custom Design + + + Create QR codes that match your brand + + + Change code and background colors + + + Adjust size (200px to 800px) + + + Set custom margins + + + Logo Integration (Premium) + + + Add your brand to the center of the QR code + + + Upload logo (PNG/JPG, up to 2MB) + + + Automatically adjust logo size + + + Match colors with your brand identity + + + Multiple Formats + + + Download your QR codes in the ideal format + + + PNG: Ideal for web and social media + + + SVG: Vector, perfect for printing + + + PDF: Ready for professional printing + + + + Best Practices + + + Do: + + + Always test before distributing in bulk + + + Use colors with good contrast + + + Keep the content concise + + + Include instructions for less tech-savvy users + + + Avoid: + + + Printing QR codes too small + + + Using colors with low contrast + + + Placing on curved or irregular surfaces + + + Using unnecessarily long URLs + + + + Troubleshooting + + + QR code is not being scanned + + + Possible causes: + + + Size too small for the reading distance + + + Low contrast between colors + + + Damaged or dirty surface + + + Solutions: + + + Increase the size of the QR code + + + Use black on white for maximum contrast + + + Reprint on higher quality material + + + Generation is slow + + + Improvement tips: + + + Download issues + + + Common solutions: + + + Check if popup was blocked + + + Try a different browser + + + Temporarily disable ad blocker + + + Use right-click > Save link as + + + Ready to Start? + + + Now that you know all the features, start creating professional QR codes! + + + Start Generating + + + + Learn about QR types + + + What is it? + + + Tips + + + Use cases + + + QR codes that redirect to websites or specific pages on the internet. + + + Enter the full URL (e.g. https://google.com) + + + Verify the URL is working + + + Customize colors and size + + + Generate and download the code + + + Shorter URLs generate cleaner codes + + + Always include https:// to ensure it works + + + Test the URL before distributing the QR code + + + Restaurant digital menus + + + Social media links + + + Promotions and landing pages + + + QR codes that display plain text when scanned, without needing internet. + + + Enter the text you want to share + + + Keep the text concise for better readability + + + Generate the QR code + + + Shorter texts generate cleaner codes + + + Use for information that doesn't change + + + Quick instructions + + + Informational messages + + + Verification codes + + + QR codes that automatically start a WhatsApp conversation. + + + Enter the number with country code (e.g. 15551234567) + + + Write an initial message (optional) + + + Generate the QR code + + + Always include the country code (+1 for US/Canada) + + + An initial message helps provide context for the contact + + + Customer service + + + Enterprise technical support + + + QR codes that open the email app with recipient and subject pre-filled. + + + Enter the recipient's email + + + Add subject and message (optional) + + + Generate the QR code + + + A clear subject helps with organization + + + A pre-written message speeds up contact + + + Physical contact form + + + Quote request + + + QR codes that open the SMS app with number and message pre-filled. + + + Enter the number with country code + + + Write the default message + + + Generate the QR code + + + Short messages are more effective + + + Include context in the default message + + + Marketing campaigns + + + Participation codes + + + Enter the network name (SSID) + + + Enter the network password + + + Select the security type (WPA/WEP) + + + WPA is the modern and most secure standard + + + Test with different devices + + + For open networks, leave the password blank + + + Guest WiFi at businesses + + + Quick connection at events + + + QR codes that save contact information directly to the phone's address book. + + + Fill in full name and company + + + Add phone and email + + + Include website and address (optional) + + + Generate the QR code + + + Fill in only essential information + + + Phone with country code works best + + + Compatible with modern iOS and Android + + + Digital business cards + + + Networking at events + + + Professional email signature + + + + QR Tutorials + + + Learn More + + + Complete guides about QR Codes + + + QR Tutorials + + + Real Estate and Brokers + + + + All QR codes generated by QR Rapido are static and permanent. This means the content is encoded directly into the QR code and cannot be changed after generation. This approach ensures maximum privacy, as we do not track scans, and works offline without depending on external servers. + + + Static QR codes are ideal for permanent information such as WiFi, business cards, website URLs, and contacts. + + + + PIX Generator + + + Create QR Codes to receive instant payments. Compatible with all major banking apps. + + + Selling many products? + + + Subscribe to our monthly plan and manage exclusive QR Codes for each product in your catalog. + \ No newline at end of file diff --git a/Resources/SharedResource.es-PY.resx b/Resources/SharedResource.es-PY.resx index 9d6e985..659eac7 100644 --- a/Resources/SharedResource.es-PY.resx +++ b/Resources/SharedResource.es-PY.resx @@ -2104,7 +2104,7 @@ - Ver Tutoriales + Tutoriales QR Aprende Más @@ -2113,7 +2113,7 @@ Guías completas sobre códigos QR - Ver Todos los Tutoriales + Tutoriales QR Inmobiliaria y Corredores diff --git a/Resources/SharedResource.pt-BR.resx b/Resources/SharedResource.pt-BR.resx index bf1b498..bff3519 100644 --- a/Resources/SharedResource.pt-BR.resx +++ b/Resources/SharedResource.pt-BR.resx @@ -2257,7 +2257,7 @@ - Ver Tutoriais + Tutoriais QR Aprenda Mais @@ -2266,7 +2266,7 @@ Guias completos sobre QR Codes - Ver Todos os Tutoriais + Tutoriais QR Imóveis e Corretores diff --git a/Views/DevTutoriais/Article.cshtml b/Views/DevTutoriais/Article.cshtml index f53a573..9bc4b45 100644 --- a/Views/DevTutoriais/Article.cshtml +++ b/Views/DevTutoriais/Article.cshtml @@ -3,19 +3,19 @@ ViewData["Title"] = Model.Metadata.Title + " — QRRapido Docs"; Layout = "~/Views/Shared/_Layout.cshtml"; - var culture = ViewBag.Culture as string ?? "pt-BR"; - var isEs = culture == "es-PY"; - var devBase = isEs ? "/es-PY/Developer" : "/Developer"; - var slug = ViewBag.Slug as string; + var isEn = (ViewBag.Culture as string) == "en"; + var isEs = (ViewBag.Culture as string) == "es-PY" || (ViewBag.Culture as string) == "es"; + var devBase = isEn ? "/en/Developer" : isEs ? "/es-PY/Developer" : "/Developer"; + var slug = ViewBag.Slug as string; - string T(string pt, string es) => isEs ? es : pt; + string T(string pt, string es, string en) => isEn ? en : isEs ? es : pt; }
- @T("Última atualização:", "Última actualización:") @Model.Metadata.LastMod.ToString("dd/MM/yyyy") + @T("Última atualização:", "Última actualización:", "Last updated:") @Model.Metadata.LastMod.ToString("dd/MM/yyyy")
@@ -48,20 +48,20 @@ @@ -70,7 +70,7 @@ {
-
@T("Outros Tutoriais", "Otros Tutoriales")
+
@T("Outros Tutoriais", "Otros Tutoriales", "Other Tutorials")
@foreach (var related in Model.RelatedArticles) diff --git a/Views/DevTutoriais/Index.cshtml b/Views/DevTutoriais/Index.cshtml index 79c9a7d..b9b6b2c 100644 --- a/Views/DevTutoriais/Index.cshtml +++ b/Views/DevTutoriais/Index.cshtml @@ -3,11 +3,11 @@ ViewData["Title"] = "Docs & Tutoriais para Desenvolvedores"; Layout = "~/Views/Shared/_Layout.cshtml"; - var culture = ViewBag.Culture as string ?? "pt-BR"; - var isEs = culture == "es-PY"; - var devBase = isEs ? "/es-PY/Developer" : "/Developer"; + var isEn = (ViewBag.Culture as string) == "en"; + var isEs = (ViewBag.Culture as string) == "es-PY" || (ViewBag.Culture as string) == "es"; + var devBase = isEn ? "/en/Developer" : isEs ? "/es-PY/Developer" : "/Developer"; - string T(string pt, string es) => isEs ? es : pt; + string T(string pt, string es, string en) => isEn ? en : isEs ? es : pt; }
@@ -16,13 +16,13 @@
-

@T("Docs & Tutoriais", "Docs & Tutoriales")

-

@T("Guias técnicos para integrar e usar a API QRRapido.", "Guías técnicas para integrar ha usar la API QRRapido.")

+

@T("Docs & Tutoriais", "Docs & Tutoriales", "Docs & Tutorials")

+

@T("Guias técnicos para integrar e usar a API QRRapido.", "Guías técnicas para integrar ha usar la API QRRapido.", "Technical guides to integrate and use the QRRapido API.")

@@ -58,7 +58,7 @@ {
-

@T("Nenhum artigo encontrado.", "Ningún artículo encontrado.")

+

@T("Nenhum artigo encontrado.", "Ningún artículo encontrado.", "No articles found.")

}
diff --git a/Views/Developer/Index.cshtml b/Views/Developer/Index.cshtml index 2dadf67..fd79ed7 100644 --- a/Views/Developer/Index.cshtml +++ b/Views/Developer/Index.cshtml @@ -12,11 +12,11 @@ var revokedKeys = Model.ApiKeys.Where(k => !k.IsActive).OrderByDescending(k => k.CreatedAt).ToList(); var baseUrl = Context.Request.Scheme + "://" + Context.Request.Host; - var culture = ViewBag.Culture as string ?? "pt-BR"; - var isEs = culture == "es-PY"; - var docsBase = isEs ? "/es-PY/Developer" : "/Developer"; + var isEn = (ViewBag.Culture as string) == "en"; + var isEs = (ViewBag.Culture as string) == "es-PY" || (ViewBag.Culture as string) == "es"; + var docsBase = isEn ? "/en/Developer" : isEs ? "/es-PY/Developer" : "/Developer"; - string T(string pt, string es) => isEs ? es : pt; + string T(string pt, string es, string en = null) => isEn && en != null ? en : isEs ? es : pt; }
@@ -28,29 +28,30 @@
-

@T("Portal do Desenvolvedor", "Portal del Desarrollador")

+

@T("Portal do Desenvolvedor", "Portal del Desarrollador", "Developer Portal")

@T("Gerencie suas chaves de API e integre o QR Rapido nas suas aplicações.", - "Gestioná tus claves de API ha integrá QR Rapido en tus aplicaciones.") + "Gestioná tus claves de API ha integrá QR Rapido en tus aplicaciones.", + "Manage your API keys and integrate QR Rapido into your applications.") @{ var tier = Model.ApiSubscription?.EffectiveTier ?? QRRapidoApp.Models.ApiPlanTier.Free; var tierLabel = tier == QRRapidoApp.Models.ApiPlanTier.Free ? "Free" : $"{tier}"; } - @T("Plano atual:", "Plan actual:") @Html.Raw(tierLabel) + @T("Plano atual:", "Plan actual:", "Current plan:") @Html.Raw(tierLabel)

diff --git a/Views/Developer/Pricing.cshtml b/Views/Developer/Pricing.cshtml index b6f6df5..4638dc1 100644 --- a/Views/Developer/Pricing.cshtml +++ b/Views/Developer/Pricing.cshtml @@ -5,24 +5,25 @@ var currentTier = ViewBag.CurrentTier as ApiPlanTier? ?? ApiPlanTier.Free; var errorMsg = TempData["Error"] as string; - var culture = ViewBag.Culture as string ?? "pt-BR"; - var isEs = culture == "es-PY"; - var devBase = isEs ? "/es-PY/Developer" : "/Developer"; + var isEn = (ViewBag.Culture as string) == "en"; + var isEs = (ViewBag.Culture as string) == "es-PY" || (ViewBag.Culture as string) == "es"; + var devBase = isEn ? "/en/Developer" : isEs ? "/es-PY/Developer" : "/Developer"; - string T(string pt, string es) => isEs ? es : pt; + string T(string pt, string es, string en = null) => isEn && en != null ? en : isEs ? es : pt; }
-

@T("Planos de API", "Planes de API")

+

@T("Planos de API", "Planes de API", "API Plans")

@T("Escolha o plano que melhor se adapta à sua integração.", - "Elegí el plan porã que mejor se adapte a tu integración.") + "Elegí el plan porã que mejor se adapte a tu integración.", + "Choose the plan that best fits your integration.")
- @T("Todos os planos incluem a", "Todos los planes incluyen la") + @T("Todos os planos incluem a", "Todos los planes incluyen la", "All plans include the") API REST - @T("com autenticação por chave.", "con autenticación por clave.") + @T("com autenticação por chave.", "con autenticación por clave.", "with key authentication.")

@if (!string.IsNullOrEmpty(errorMsg)) { @@ -174,7 +175,7 @@
diff --git a/Views/Shared/_Layout.cshtml b/Views/Shared/_Layout.cshtml index 61cddc7..a81ed26 100644 --- a/Views/Shared/_Layout.cshtml +++ b/Views/Shared/_Layout.cshtml @@ -18,33 +18,38 @@ var appEnvironment = Configuration["App:Environment"] ?? HostEnvironment?.EnvironmentName ?? "Unknown"; var secretsLoaded = Configuration.GetValue("App:SecretsLoaded"); - // SEO: Determine if current page is Spanish (for URL building) + // SEO: Determine current culture from URL var requestPath = Context.Request.Path.Value ?? "/"; - var isSpanish = requestPath.StartsWith("/es-PY", StringComparison.OrdinalIgnoreCase); + var isSpanish = requestPath.StartsWith("/es-PY", StringComparison.OrdinalIgnoreCase) + || requestPath.StartsWith("/es/", StringComparison.OrdinalIgnoreCase) + || string.Equals(requestPath, "/es", StringComparison.OrdinalIgnoreCase); + var isEnglish = requestPath.StartsWith("/en/", StringComparison.OrdinalIgnoreCase) + || string.Equals(requestPath, "/en", StringComparison.OrdinalIgnoreCase); // Get path without culture prefix for building alternate URLs var pathWithoutCulture = requestPath; - if (isSpanish && requestPath.Length > 6) - { - pathWithoutCulture = requestPath.Substring(6); // Remove "/es-PY" - } - else if (isSpanish) - { - pathWithoutCulture = "/"; - } + if (requestPath.StartsWith("/es-PY", StringComparison.OrdinalIgnoreCase)) + pathWithoutCulture = requestPath.Length > 6 ? requestPath.Substring(6) : "/"; + else if (requestPath.StartsWith("/es/", StringComparison.OrdinalIgnoreCase)) + pathWithoutCulture = requestPath.Length > 3 ? requestPath.Substring(3) : "/"; + else if (requestPath.StartsWith("/en/", StringComparison.OrdinalIgnoreCase)) + pathWithoutCulture = requestPath.Length > 3 ? requestPath.Substring(3) : "/"; if (string.IsNullOrEmpty(pathWithoutCulture)) pathWithoutCulture = "/"; - // Canonical URL - for Portuguese it's without prefix, for Spanish it's with /es-PY - var canonicalUrl = isSpanish + // Canonical URL + var canonicalUrl = isEnglish + ? $"https://qrrapido.site/en{(pathWithoutCulture == "/" ? "" : pathWithoutCulture)}" + : isSpanish ? $"https://qrrapido.site/es-PY{(pathWithoutCulture == "/" ? "" : pathWithoutCulture)}" : $"https://qrrapido.site{pathWithoutCulture}"; // Alternate URLs for hreflang var ptUrl = $"https://qrrapido.site{pathWithoutCulture}"; var esUrl = $"https://qrrapido.site/es-PY{(pathWithoutCulture == "/" ? "" : pathWithoutCulture)}"; + var enUrl = $"https://qrrapido.site/en{(pathWithoutCulture == "/" ? "" : pathWithoutCulture)}"; // Culture prefix for internal links - var culturePrefix = isSpanish ? "/es-PY" : ""; + var culturePrefix = isEnglish ? "/en" : isSpanish ? "/es-PY" : ""; if (User?.Identity?.IsAuthenticated == true) { @@ -86,6 +91,7 @@ + @@ -319,7 +325,7 @@
diff --git a/Views/Tutoriais/Article.cshtml b/Views/Tutoriais/Article.cshtml index 99dbafb..281ee9c 100644 --- a/Views/Tutoriais/Article.cshtml +++ b/Views/Tutoriais/Article.cshtml @@ -2,6 +2,9 @@ @{ Layout = "~/Views/Shared/_Layout.cshtml"; ViewData["Title"] = Model.Metadata.Title; + var isEn = (ViewBag.Culture as string) == "en"; + var isEs = (ViewBag.Culture as string) == "es-PY" || (ViewBag.Culture as string) == "es"; + string T(string pt, string es, string en) => isEn ? en : isEs ? es : pt; var baseUrl = "https://qrrapido.site"; var articleUrl = $"{baseUrl}/{ViewBag.Culture}/tutoriais/{ViewBag.Slug}"; } @@ -84,7 +87,7 @@ { "@@type": "ListItem", "position": 2, - "name": "@(ViewBag.Culture == "pt-BR" ? "Tutoriais" : "Tutoriales")", + "name": "@T("Tutoriais", "Tutoriales", "Tutorials")", "item": "@baseUrl/@ViewBag.Culture/tutoriais" }, { @@ -103,7 +106,7 @@ @@ -118,7 +121,7 @@
@Model.Metadata.Author | @Model.Metadata.Date.ToString("dd MMM yyyy") | - @Model.Metadata.ReadingTimeMinutes min @(ViewBag.Culture == "pt-BR" ? "de leitura" : "de lectura") + @Model.Metadata.ReadingTimeMinutes min @T("de leitura", "de lectura", "read")
@if (!string.IsNullOrEmpty(Model.Metadata.Image)) @@ -138,7 +141,7 @@