diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..be3f7b2 --- /dev/null +++ b/LICENSE @@ -0,0 +1,661 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. diff --git a/apps/api/package.json b/apps/api/package.json index 904b358..d73b571 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -2,6 +2,7 @@ "name": "@jiobase/api", "version": "0.0.1", "private": true, + "license": "AGPL-3.0-only", "type": "module", "scripts": { "dev": "wrangler dev --port 8788", diff --git a/apps/proxy/package.json b/apps/proxy/package.json index b44da4f..04d0f73 100644 --- a/apps/proxy/package.json +++ b/apps/proxy/package.json @@ -2,6 +2,7 @@ "name": "@jiobase/proxy", "version": "0.0.1", "private": true, + "license": "AGPL-3.0-only", "type": "module", "scripts": { "dev": "wrangler dev", diff --git a/apps/proxy/src/config.ts b/apps/proxy/src/config.ts index 78d3d5c..2e8c698 100644 --- a/apps/proxy/src/config.ts +++ b/apps/proxy/src/config.ts @@ -1,5 +1,9 @@ import type { Env, ProxyConfig } from './types.js'; +// Cache KV reads for 60 seconds — avoids hitting KV on every single request. +// Config updates (from the API) take up to 60s to propagate, which is acceptable. +const KV_CACHE_TTL = 60; + export async function resolveConfig( hostname: string, env: Env @@ -19,17 +23,17 @@ export async function resolveConfig( } if (slug) { - // Look up by slug - const raw = await env.PROXY_CONFIG.get(`app:${slug}`); + // Look up by slug with caching + const raw = await env.PROXY_CONFIG.get(`app:${slug}`, { cacheTtl: KV_CACHE_TTL }); if (!raw) return null; return { config: JSON.parse(raw), slug }; } // Otherwise, check custom domain mapping - const mappedSlug = await env.PROXY_CONFIG.get(`domain:${hostname}`); + const mappedSlug = await env.PROXY_CONFIG.get(`domain:${hostname}`, { cacheTtl: KV_CACHE_TTL }); if (!mappedSlug) return null; - const raw = await env.PROXY_CONFIG.get(`app:${mappedSlug}`); + const raw = await env.PROXY_CONFIG.get(`app:${mappedSlug}`, { cacheTtl: KV_CACHE_TTL }); if (!raw) return null; return { config: JSON.parse(raw), slug: mappedSlug }; } diff --git a/apps/proxy/src/handler.ts b/apps/proxy/src/handler.ts index 935438d..38e90a3 100644 --- a/apps/proxy/src/handler.ts +++ b/apps/proxy/src/handler.ts @@ -52,13 +52,25 @@ export async function handleHttpProxy( // Clone response headers const responseHeaders = new Headers(upstreamResponse.headers); - // Rewrite supabase.co URLs in Location headers (redirects) + // Rewrite Location headers that redirect directly to the Supabase host. + // Only rewrite the *host* portion of the URL — NOT query params. + // This avoids breaking OAuth redirect_uri params (e.g. Google's redirect_uri + // must match exactly between the authorize request and the token exchange). const location = responseHeaders.get('Location'); - if (location && location.includes('.supabase.co')) { - responseHeaders.set( - 'Location', - location.replace(new URL(config.supabaseUrl).hostname, url.hostname) - ); + if (location) { + try { + const locUrl = new URL(location); + const supabaseHost = new URL(config.supabaseUrl).hostname; + if (locUrl.hostname === supabaseHost) { + // Direct redirect to Supabase — rewrite host to proxy + locUrl.hostname = url.hostname; + responseHeaders.set('Location', locUrl.toString()); + } + // If Location points to an external host (e.g. accounts.google.com), + // leave it untouched — including any redirect_uri query params. + } catch { + // Malformed Location header — leave it as-is + } } // Add CORS headers diff --git a/apps/proxy/src/websocket.ts b/apps/proxy/src/websocket.ts index 4a272c9..eb4d3d2 100644 --- a/apps/proxy/src/websocket.ts +++ b/apps/proxy/src/websocket.ts @@ -9,12 +9,17 @@ export async function handleWebSocket( upstreamUrl.pathname = url.pathname; upstreamUrl.search = url.search; - // Build upstream WebSocket URL - const wsUrl = upstreamUrl.toString().replace('https:', 'wss:').replace('http:', 'ws:'); + // Cloudflare Workers fetch() requires https:// (not wss://) for WebSocket upgrade. + // The Upgrade header tells the upstream to switch protocols. + const headers = new Headers(request.headers); + headers.set('Host', upstreamUrl.hostname); + headers.delete('cf-connecting-ip'); + headers.delete('cf-ray'); + headers.delete('cf-visitor'); + headers.delete('cf-ipcountry'); - // Create upstream WebSocket connection - const upstreamResp = await fetch(wsUrl, { - headers: request.headers, + const upstreamResp = await fetch(upstreamUrl.toString(), { + headers, }); const upstreamWs = upstreamResp.webSocket; diff --git a/apps/web/package.json b/apps/web/package.json index 9f5d5f3..e809695 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -1,6 +1,7 @@ { "name": "@jiobase/web", "private": true, + "license": "AGPL-3.0-only", "version": "0.0.1", "type": "module", "scripts": { diff --git a/apps/web/src/lib/components/BlogSuggestions.svelte b/apps/web/src/lib/components/BlogSuggestions.svelte index c386126..c62b1b8 100644 --- a/apps/web/src/lib/components/BlogSuggestions.svelte +++ b/apps/web/src/lib/components/BlogSuggestions.svelte @@ -80,6 +80,62 @@ badge: 'Explainer', badgeColor: 'purple', readTime: '6 min' + }, + { + slug: 'supabase-india-block-timeline', + title: 'Supabase India: Complete Timeline of the Block (Feb 2026)', + description: 'A day-by-day timeline of the Supabase block in India, from the government order to community workarounds.', + badge: 'Timeline', + badgeColor: 'blue', + readTime: '7 min' + }, + { + slug: 'supabase-production-app-broken-india', + title: 'Your Production App Just Broke: Emergency Guide for Supabase Block in India', + description: 'Emergency triage guide with quick diagnosis, what NOT to do, and a 15-minute fix with code examples.', + badge: 'Emergency', + badgeColor: 'red', + readTime: '6 min' + }, + { + slug: 'india-blocking-developer-tools-history', + title: "India's History of Blocking Developer Tools: From GitHub to Supabase", + description: 'From GitHub in 2014 to Supabase in 2026, the full history of ISP-level blocks affecting developers in India.', + badge: 'Deep Dive', + badgeColor: 'purple', + readTime: '8 min' + }, + { + slug: 'dns-poisoning-supabase-india-explained', + title: 'DNS Poisoning Explained: How Indian ISPs Block Supabase', + description: 'A technical deep dive into DNS poisoning, sinkhole IPs, SNI inspection, and why a reverse proxy is the only reliable fix.', + badge: 'Technical', + badgeColor: 'blue', + readTime: '10 min' + }, + { + slug: 'supabase-vs-firebase-both-blocked-india', + title: 'Supabase vs Firebase in India: Both Blocked, One Solution', + description: 'Both major BaaS platforms face ISP blocks in India. Compare the blocks, why switching does not help, and the one fix.', + badge: 'Comparison', + badgeColor: 'purple', + readTime: '7 min' + }, + { + slug: 'india-disrupts-supabase-blocking-order', + title: 'India Disrupts Access to Supabase with Government Blocking Order', + description: 'A government blocking order under Section 69A has disrupted Supabase access across India. Full news coverage and analysis.', + badge: 'News', + badgeColor: 'blue', + readTime: '6 min' + }, + { + slug: 'supabase-network-connectivity-problems-india', + title: 'Supabase Network Connectivity Problems in India: Causes, Diagnosis, and Fix', + description: 'Users experiencing network connectivity problems with Supabase in India? It is not a Supabase outage. Full diagnosis and fix guide.', + badge: 'Troubleshooting', + badgeColor: 'amber', + readTime: '7 min' } ]; diff --git a/apps/web/src/lib/components/DonationModal.svelte b/apps/web/src/lib/components/DonationModal.svelte new file mode 100644 index 0000000..e4970fb --- /dev/null +++ b/apps/web/src/lib/components/DonationModal.svelte @@ -0,0 +1,143 @@ + + + + +{#if open} + + + +
+ +
+
+ +
+ + + + + {#if variant === 'celebration'} + +
+
+ + + +
+

Your app is live!

+
+ +

+ Traffic is now routing through Cloudflare's edge network. Your users won't even notice a difference — except that everything works now. +

+ +
+

+ Hey, I'm Sunith — I built JioBase because the Supabase block broke my own app and I knew other devs were stuck too. It's free because no one should pay to fix someone else's problem. +

+

+ But Cloudflare bills are real. If JioBase just saved your production app, a $3 coffee helps me keep the lights on for everyone. +

+
+ {:else} + +
+
+ ☕ +
+

Quick reality check

+
+ +

+ JioBase proxies millions of requests for free. Every single request costs me money. +

+ +

+ I'm not a company. I'm one developer paying Cloudflare bills out of pocket so your Supabase app works in India. +

+ +
+ +

+ $3 = one coffee = JioBase stays free for hundreds of devs +

+
+ +

+ No pressure — but it genuinely helps keep this project alive. +

+ {/if} + + +
+ + + + + {variant === 'celebration' ? 'Buy me a coffee' : 'Support JioBase'} + + +
+
+
+
+{/if} + + diff --git a/apps/web/src/routes/+layout.svelte b/apps/web/src/routes/+layout.svelte index 71f283a..9dd328e 100644 --- a/apps/web/src/routes/+layout.svelte +++ b/apps/web/src/routes/+layout.svelte @@ -1,6 +1,5 @@ - + + + + + JioBase diff --git a/apps/web/src/routes/+page.svelte b/apps/web/src/routes/+page.svelte index 1c2f6a1..d773606 100644 --- a/apps/web/src/routes/+page.svelte +++ b/apps/web/src/routes/+page.svelte @@ -1,12 +1,70 @@ JioBase - Fix Supabase Blocked in India | Bypass Jio, Airtel DNS Block + {@html ``} + +
@@ -370,16 +428,23 @@
-

Free & Open Source

+

Built by one dev. Funded by coffee.

- 100% free. For now. + 100% free. Seriously.

-

- JioBase is a community project built to help Indian developers affected by the Supabase DNS block. Everything is free for the time being - no limits, no paid tiers. +

+ + +
+

+ I'm Sunith, an indie developer from India. I built JioBase because the Supabase block broke my own production app — and I knew thousands of other devs were stuck too. +

+

+ It's free because I think fixing infrastructure shouldn't cost you anything. But running this isn't free for me — every proxied request costs real money on Cloudflare. If JioBase saved your app, a $3 coffee genuinely helps keep the lights on.

-
+
  • @@ -411,7 +476,7 @@ href="https://buymeacoffee.com/sunithvs" target="_blank" rel="noopener" - class="group flex items-center gap-2 rounded-xl border border-amber-400/20 bg-amber-400/5 px-6 py-3 text-sm font-medium text-amber-300 transition hover:border-amber-400/30 hover:bg-amber-400/10" + class="flex items-center gap-2 rounded-xl bg-amber-400 px-6 py-3 text-sm font-semibold text-black shadow-lg shadow-amber-400/20 transition hover:bg-amber-300" > @@ -421,7 +486,7 @@

- Running on Cloudflare Workers costs money. If JioBase saves you time, consider supporting the project. + Every $3 coffee directly pays for Cloudflare Workers that keep your app online.

@@ -554,12 +619,17 @@ Features Pricing GitHub + Terms + Privacy

© {new Date().getFullYear()} JioBase. Built by sunithvs

+

+ JioBase is an independent open-source project. Not affiliated with Supabase Inc., Jio Platforms Ltd., Reliance Industries, or Cloudflare Inc. +

diff --git a/apps/web/src/routes/blog/+layout.svelte b/apps/web/src/routes/blog/+layout.svelte index 8db9297..9a63624 100644 --- a/apps/web/src/routes/blog/+layout.svelte +++ b/apps/web/src/routes/blog/+layout.svelte @@ -14,8 +14,12 @@
-
- © {new Date().getFullYear()} JioBase. Built on Cloudflare. +
+
+ Terms + Privacy +
+

© {new Date().getFullYear()} JioBase. Built on Cloudflare.

diff --git a/apps/web/src/routes/blog/+page.svelte b/apps/web/src/routes/blog/+page.svelte index 29f5462..8e268ed 100644 --- a/apps/web/src/routes/blog/+page.svelte +++ b/apps/web/src/routes/blog/+page.svelte @@ -1,6 +1,25 @@ Blog - JioBase + {@html ``}
@@ -149,5 +168,107 @@ Understanding the legal framework behind India's Supabase block. What Section 69A of the IT Act is, how blocking orders work, and what developers can do.

+ + +
+ Timeline + + 7 min read +
+

+ Supabase India: Complete Timeline of the Block (Feb 2026) +

+

+ A day-by-day timeline of the Supabase block in India. From the government order on Feb 24 to community workarounds on Feb 28, here is everything that happened. +

+
+ + + +
+ Emergency + + 6 min read +
+

+ Your Production App Just Broke: Emergency Guide for Supabase Block in India +

+

+ Your Supabase-powered app stopped working for Indian users. Emergency triage guide with quick diagnosis, what NOT to do, and a 15-minute fix with code examples. +

+
+ + + +
+ Deep Dive + + 8 min read +
+

+ India's History of Blocking Developer Tools: From GitHub to Supabase +

+

+ From GitHub in 2014 to Supabase in 2026, India has a long history of blocking platforms developers depend on. Here is the full timeline and what you can do about it. +

+
+ + + +
+ Technical + + 10 min read +
+

+ DNS Poisoning Explained: How Indian ISPs Block Supabase +

+

+ A technical deep dive into how Indian ISPs use DNS poisoning and SNI inspection to block Supabase, and why a reverse proxy is the only reliable fix. +

+
+ + +
+ Comparison + + 7 min read +
+

+ Supabase vs Firebase in India: Both Blocked, One Solution +

+

+ Both major BaaS platforms now face ISP blocks in India. Compare the blocks, understand why switching backends does not help, and learn the one architecture fix that works for both. +

+
+ + +
+ News + + 6 min read +
+

+ India Disrupts Access to Supabase with Government Blocking Order +

+

+ A government blocking order under Section 69A of the IT Act has disrupted access to Supabase across India's largest ISPs. Full news coverage, timeline, and the one fix that works. +

+
+ + + +
+ Troubleshooting + + 7 min read +
+

+ Supabase Network Connectivity Problems in India: Causes, Diagnosis, and Fix +

+

+ Users experiencing network connectivity problems with Supabase in the India region? It is not a Supabase outage. Indian ISPs are DNS-blocking *.supabase.co. Full diagnosis and fix guide. +

+
diff --git a/apps/web/src/routes/blog/dns-poisoning-supabase-india-explained/+page.svelte b/apps/web/src/routes/blog/dns-poisoning-supabase-india-explained/+page.svelte new file mode 100644 index 0000000..95b9ca1 --- /dev/null +++ b/apps/web/src/routes/blog/dns-poisoning-supabase-india-explained/+page.svelte @@ -0,0 +1,663 @@ + + + + DNS Poisoning Explained: How Indian ISPs Block Supabase (Technical Deep Dive) | JioBase + + + + + + + + + {@html ``} + + +
+ + +
+
+ Technical + + · + 10 min read +
+ +

+ DNS Poisoning Explained: How Indian ISPs Block Supabase +

+ +

+ A technical deep dive into how Indian ISPs use DNS poisoning to block Supabase, what happens at each layer of the network stack, and why a reverse proxy is the only reliable fix that works for all your users. +

+
+ +
+ + + +
+

How DNS resolution normally works

+ +

+ Before understanding DNS poisoning, you need to understand how DNS resolution works under normal conditions. DNS (Domain Name System) translates human-readable domain names like yourproject.supabase.co into IP addresses that computers use to route traffic. +

+ +

+ Here is what happens step by step when your app makes a request to Supabase on an unblocked network: +

+ + +
+
+
+

Browser

+

Your app

+
+ +
+ + 1. Query +
+ +
+

OS Resolver

+

Local cache

+
+ +
+ + 2. Forward +
+ +
+

ISP Resolver

+

Recursive

+
+ +
+ + 3. Lookup +
+ +
+

Auth NS

+

supabase.co

+
+
+ +
+
+

4. Returns real IP: 104.18.x.x (Supabase server)

+
+
+
+ +
+
+

+ Step 1: Your browser (or the Supabase client library) needs to connect to yourproject.supabase.co. It asks the operating system's DNS resolver for the IP address. +

+
+
+

+ Step 2: The OS resolver checks its local cache. If the domain has not been looked up recently, it forwards the query to the configured DNS resolver, which is typically your ISP's recursive resolver. +

+
+
+

+ Step 3: The ISP's recursive resolver queries the authoritative nameserver for supabase.co (managed by Supabase's DNS provider). +

+
+
+

+ Step 4: The authoritative nameserver returns the real IP address of the Supabase server. Your browser connects to that IP, the TLS handshake completes, and the API request goes through. +

+
+
+ +

+ This entire process takes milliseconds and is completely transparent to the user. Under normal conditions, it works flawlessly. But when an ISP is ordered to block a domain, this process is corrupted at Step 3. +

+
+ + + +
+

How DNS poisoning works

+ +

+ DNS poisoning (also called DNS spoofing or DNS hijacking) is when a DNS resolver returns a fake IP address instead of the real one. In the case of Indian ISPs blocking Supabase, the ISP's recursive resolver is configured to intercept queries for *.supabase.co and return a sinkhole IP address. +

+ +

+ Here is what the poisoned DNS resolution looks like: +

+ + +
+
+
+

Browser

+

Your app

+
+ +
+ + Query +
+ +
+

OS Resolver

+

Local cache

+
+ +
+ + Forward +
+ +
+

ISP Resolver

+

POISONED

+
+ +
+ + BLOCKED +
+ +
+

Auth NS

+

Never reached

+
+
+ +
+
+

Returns sinkhole IP: 49.44.79.236 (NOT Supabase)

+
+
+
+ +

+ Instead of forwarding the query to Supabase's authoritative nameserver, the ISP resolver intercepts it. It matches the domain against a blocklist, finds *.supabase.co on the list, and returns a sinkhole IP address like 49.44.79.236. +

+ +

+ A sinkhole IP is a dead-end address. It might be an IP that simply drops all incoming connections, or it might be a server that returns a government-mandated block page. Either way, your app's request never reaches Supabase. The connection hangs until it times out, resulting in the ERR_CONNECTION_TIMED_OUT error. +

+ +
+

What makes this effective

+
    +
  • + + Wildcard matching: The ISP blocks all subdomains under *.supabase.co, not just a specific project. Every Supabase project URL is affected. +
  • +
  • + + Silent failure: There is no error page or notification. The connection simply times out. Users and developers often waste hours debugging before realizing it is an ISP block. +
  • +
  • + + Default path: Most devices use their ISP's DNS resolver by default. Users do not need to opt into the block; it is the default behavior on the network. +
  • +
+
+
+ + + +
+

See it yourself: diagnostic commands

+ +

+ You can verify DNS poisoning on your network using these terminal commands. Compare the results from your ISP's DNS with a public DNS resolver like Cloudflare's 1.1.1.1 to see the difference. For a more detailed diagnostic guide, see our ISP block testing guide. +

+ + +

DNS lookup using your ISP's resolver (poisoned):

+
+
+
+
+
+ terminal +
+
+
$ nslookup yourproject.supabase.co
+
Server: 198.18.0.1
+
Address: 198.18.0.1#53
+
Non-authoritative answer:
+
Name: yourproject.supabase.co
+
Address: 49.44.79.236 ← sinkhole IP (NOT Supabase)
+
+
+ + +

DNS lookup using Cloudflare DNS (correct):

+
+
+
+
+
+ terminal +
+
+
$ nslookup yourproject.supabase.co 1.1.1.1
+
Server: 1.1.1.1
+
Address: 1.1.1.1#53
+
Non-authoritative answer:
+
Name: yourproject.supabase.co
+
Address: 104.18.x.x ← real Supabase IP
+
+
+ + +

Quick comparison using dig:

+
+
+
+
+
+ terminal +
+
+
# Using ISP DNS (poisoned result)
+
$ dig +short yourproject.supabase.co
+
49.44.79.236
+
# Using Cloudflare DNS (correct result)
+
$ dig +short yourproject.supabase.co @1.1.1.1
+
104.18.x.x
+
+
+ + +

Connection attempt showing the timeout:

+
+
+
+
+
+ terminal +
+
+
$ curl -v --max-time 10 https://yourproject.supabase.co
+
* Trying 49.44.79.236:443...
+
* Connection timed out after 10001 milliseconds
+
* Closing connection
+
curl: (28) Connection timed out after 10001 milliseconds
+
+
+ +
+
+ +

+ The key diagnostic: If nslookup yourproject.supabase.co returns a different IP than nslookup yourproject.supabase.co 1.1.1.1, your ISP is poisoning the DNS response. The sinkhole IP will typically be in the 49.44.x.x range for Jio users. +

+
+
+
+ + + +
+

Why .com works but .co does not

+ +

+ One of the most confusing aspects of the block for developers is that supabase.com works perfectly while supabase.co is completely blocked. This is not a bug in the blocking; it reflects Supabase's infrastructure architecture. +

+ +
+
+
+ + supabase.com (NOT blocked) +
+

The marketing website and dashboard. This is where you log in, manage projects, and read documentation. It does not serve API traffic.

+
+ +
+
+ + supabase.co (BLOCKED) +
+

The API domain. Every project gets a subdomain like abcdefgh.supabase.co. All REST, Auth, Storage, and Realtime endpoints live here.

+
+
+ +

+ The blocking order targets *.supabase.co specifically. Since all API traffic uses the .co domain, the block effectively disables every Supabase-powered application for Indian users while leaving the dashboard accessible. +

+ +

+ This is why you can still log into the Supabase dashboard, view your projects, and see that everything is running normally. The database is fine. The server is fine. The problem is that your users' browsers cannot reach the API endpoint because their ISP's DNS will not resolve the .co domain correctly. +

+
+ + + +
+

Beyond DNS: Deep Packet Inspection (DPI)

+ +

+ DNS poisoning is the primary blocking mechanism, but some Indian ISPs employ an additional layer of blocking called Deep Packet Inspection (DPI). This is important to understand because it explains why simply changing your DNS resolver to 1.1.1.1 or 8.8.8.8 does not always fix the problem. +

+ +

+ When your browser establishes a TLS (HTTPS) connection, the first step is the TLS handshake. During this handshake, your browser sends a field called the Server Name Indication (SNI) in plaintext. The SNI tells the server which domain the client wants to connect to, and it is visible to anyone inspecting the traffic, including your ISP. +

+ +

+ Here is what happens with DPI-based blocking: +

+ +
+
+

+ Step 1: You switch your DNS to Cloudflare's 1.1.1.1. DNS now resolves correctly and returns Supabase's real IP address. +

+
+
+

+ Step 2: Your browser starts a TLS handshake with Supabase's real IP. In the Client Hello message, the SNI field says yourproject.supabase.co. +

+
+
+

+ Step 3: The ISP's DPI equipment inspects the SNI field, sees supabase.co, and drops or resets the connection before TLS can complete. +

+
+
+

+ Result: Even though DNS resolved correctly, the connection still fails. You get the same ERR_CONNECTION_TIMED_OUT or ERR_CONNECTION_RESET error. +

+
+
+ +
+

Why this matters

+

+ DPI-based blocking means that even if you bypass DNS poisoning by using a different resolver, the ISP can still see and block the connection based on the hostname in the TLS handshake. This is why DNS changes are not a reliable fix, even for local development. The only way to fully bypass both DNS poisoning and DPI is to ensure the domain supabase.co never appears in any part of the connection that the ISP can inspect. +

+
+
+ + + +
+

Why just changing your DNS does not fix it for your users

+ +

+ Even if changing DNS to 1.1.1.1 bypasses both DNS poisoning and DPI on your machine (which is not guaranteed), it only fixes the problem for you. Your production users are still affected. +

+ +
+

The scale of the problem

+
    +
  • + + 500M+ Jio subscribers all use Jio's default DNS resolver. They have not changed it. They will not change it. Most of them do not know what DNS is. +
  • +
  • + + Mobile users cannot easily change DNS. On Android without root, changing DNS requires a third-party app or a Private DNS setting that most users will never configure. On iOS, per-network DNS settings reset frequently. +
  • +
  • + + You cannot ship a DNS change. Your app's code has no control over which DNS resolver the user's device uses. You cannot programmatically change their DNS settings. +
  • +
  • + + ISPs intercept public DNS too. Some ISPs redirect DNS queries to known public resolvers (like 8.8.8.8) back through their own resolver, negating the workaround entirely. +
  • +
+
+ +

+ The fix must be transparent to end users. They should not need to install anything, change any setting, or even know that a block exists. The solution needs to work at the infrastructure level, not the client level. +

+
+ + + +
+

How a reverse proxy bypasses the block

+ +

+ A reverse proxy solves both DNS poisoning and DPI in one step. Instead of your app connecting directly to yourproject.supabase.co, it connects to a domain you control (or one provided by JioBase) that is not on the ISP's blocklist. +

+ +

+ Here is the complete flow with a reverse proxy: +

+ + +
+
+

User's device (client-side, ISP can inspect)

+
+
+
+

Your App

+

Browser / Client

+
+ +
+ + HTTPS + SNI: yourapp.jiobase.com +
+ +
+

JioBase Proxy

+

Cloudflare Edge

+
+ +
+ + HTTPS + Server-side +
+ +
+

Supabase

+

*.supabase.co

+
+
+ +
+

Server-side (ISP cannot inspect)

+
+
+ +
+
+

+ DNS query: The browser resolves yourapp.jiobase.com, not supabase.co. The ISP's DNS has no block for this domain, so it returns the real Cloudflare IP. +

+
+
+

+ TLS handshake: The SNI field says yourapp.jiobase.com, not supabase.co. DPI equipment sees nothing to block. +

+
+
+

+ Proxy forwarding: The Cloudflare Worker receives the request and forwards it to yourproject.supabase.co on the server side. This server-to-server connection happens on Cloudflare's network, completely outside the ISP's control. +

+
+
+

+ Response: Supabase responds to the Worker, which forwards the response back to the user's browser. The entire round trip adds only 1-5ms of latency. +

+
+
+ +

+ The ISP never sees supabase.co in any DNS query, SNI field, or HTTP header. From the ISP's perspective, the user is simply accessing a Cloudflare-hosted domain. There is nothing to block. +

+
+ + + +
+

Verifying the fix

+ +

+ After setting up your proxy through JioBase or a self-hosted Cloudflare Worker, you can verify it works by running these commands from an affected ISP connection: +

+ + +

Verify DNS resolves correctly for the proxy domain:

+
+
+
+
+
+ terminal +
+
+
# Proxy domain resolves normally (not blocked)
+
$ nslookup yourapp.jiobase.com
+
Name: yourapp.jiobase.com
+
Address: 104.21.x.x ← Cloudflare IP (correct)
+
+
+ + +

Verify API requests work through the proxy:

+
+
+
+
+
+ terminal +
+
+
# Test REST API through the proxy
+
$ curl -s https://yourapp.jiobase.com/rest/v1/ \
+
-H "apikey: your-anon-key" \
+
-H "Authorization: Bearer your-anon-key"
+
{'{"message":"ok"}'} ← success, proxy is working
+
+
+ + +

Compare direct vs proxy connection:

+
+
+
+
+
+ terminal +
+
+
# Direct connection (blocked, times out)
+
$ curl --max-time 5 https://yourproject.supabase.co/rest/v1/
+
curl: (28) Connection timed out
+
# Through proxy (works instantly)
+
$ curl --max-time 5 https://yourapp.jiobase.com/rest/v1/
+
HTTP/2 200 OK
+
+
+ +
+
+ +

+ Test from the right network. Make sure you are testing from a Jio, Airtel, or ACT Fibernet connection. If you are on a VPN or using a different ISP, the direct connection might work too, which does not prove the proxy is solving the block. Disable your VPN and test on mobile data for the most accurate result. +

+
+
+
+ + + +
+

Frequently Asked Questions

+ +
+
+ + Can DNS poisoning be detected programmatically from my app? + + +
+ Not reliably from client-side JavaScript. Browsers do not expose DNS resolution details to web pages. You can detect connectivity failures (timeouts, connection resets) but cannot determine the cause. From a server or terminal, you can compare DNS results from different resolvers using nslookup or dig as shown above. +
+
+ +
+ + Does Encrypted Client Hello (ECH) protect against SNI-based blocking? + + +
+ ECH (formerly ESNI) encrypts the SNI field during the TLS handshake, which would prevent ISPs from inspecting the hostname. However, ECH is not widely deployed yet, and ISPs can block ECH-enabled connections entirely as a fallback. It is also a client-side feature that requires browser support and server support, neither of which you can control for your end users. A reverse proxy remains the more practical solution. +
+
+ +
+ + Does a reverse proxy add latency to API requests? + + +
+ A small amount, typically 1-5ms. JioBase runs on Cloudflare's edge network with 300+ data centers worldwide, including multiple locations in India. The Worker processes the request at the nearest edge location to the user, then forwards it to Supabase's servers. The added latency is negligible compared to the alternative of the request not working at all. +
+
+ +
+ + Can the ISP block the proxy domain too? + + +
+ In theory, any domain can be blocked. However, blocking a custom proxy domain is far less likely because it is not on any existing blocklist. If you use your own custom domain with JioBase, the domain is unique to your application. ISP blocklists target known services by their well-known domains, not individual application domains. Additionally, if a proxy domain were ever blocked, you could switch to a new domain in minutes. +
+
+
+
+ + + +
+
+

+ Bypass DNS poisoning in 5 minutes +

+

+ Set up a JioBase reverse proxy and make your Supabase app work for every user in India. No DNS changes, no VPN, no client-side workarounds. Just swap one URL. +

+ +

+ Free tier includes 1 proxy app and 50,000 requests/month. No credit card required. +

+
+
+ + + + + +
diff --git a/apps/web/src/routes/blog/firebase-supabase-blocked-india/+page.svelte b/apps/web/src/routes/blog/firebase-supabase-blocked-india/+page.svelte index 8afa8f5..81d76f2 100644 --- a/apps/web/src/routes/blog/firebase-supabase-blocked-india/+page.svelte +++ b/apps/web/src/routes/blog/firebase-supabase-blocked-india/+page.svelte @@ -19,6 +19,7 @@ + {@html ``}
diff --git a/apps/web/src/routes/blog/fix-supabase-jio-5-minutes/+page.svelte b/apps/web/src/routes/blog/fix-supabase-jio-5-minutes/+page.svelte index f3cb600..15b3d43 100644 --- a/apps/web/src/routes/blog/fix-supabase-jio-5-minutes/+page.svelte +++ b/apps/web/src/routes/blog/fix-supabase-jio-5-minutes/+page.svelte @@ -18,6 +18,7 @@ + {@html ``}
diff --git a/apps/web/src/routes/blog/india-blocking-developer-tools-history/+page.svelte b/apps/web/src/routes/blog/india-blocking-developer-tools-history/+page.svelte new file mode 100644 index 0000000..252c7fd --- /dev/null +++ b/apps/web/src/routes/blog/india-blocking-developer-tools-history/+page.svelte @@ -0,0 +1,378 @@ + + + + India's History of Blocking Developer Tools: From GitHub to Supabase | JioBase + + + + + + + + + {@html ``} + + +
+ + +
+
+ Deep Dive + + · + 8 min read +
+ +

+ India's History of Blocking Developer Tools: From GitHub to Supabase +

+ +

+ India has a pattern of blocking developer tools. From GitHub in 2014 to Supabase in 2026, here is the full history of ISP-level blocks that have disrupted millions of developers, why they happen, and what you can do about it. +

+
+ +
+ + + +
+

The pattern

+ +

+ India's Information Technology Act, specifically Section 69A, gives the central government the power to direct ISPs to block any website or online service. The stated purpose is to protect national security, sovereignty, and public order. In practice, the mechanism has been used against a wide range of targets, from social media platforms to code repositories. +

+ +

+ The process lacks transparency. Blocking orders are issued by the Ministry of Electronics and Information Technology (MeitY) to ISPs directly. There is no public notice before a block takes effect. There is no appeals process for the affected service. In most cases, the order itself is classified and never made public, meaning neither the blocked service nor its users are told exactly why it was blocked. +

+ +

+ For developers, this creates a uniquely frustrating situation. The tools you build your business on can vanish from your network without warning. Your code still works, your deployment is still live, your database is still running. But your users in India suddenly cannot reach any of it. +

+ +
+

Why developer tools are especially vulnerable

+
    +
  • + + Platform hosting: Services like GitHub and Supabase host millions of projects. If one piece of objectionable content exists on the platform, the entire domain can be blocked. +
  • +
  • + + Shared domains: APIs typically run on a single domain (like *.supabase.co). Blocking that domain takes down every project using the service. +
  • +
  • + + No lobbying power: Unlike large social media companies, developer tool companies rarely have legal teams or government relations staff in India to push back against orders. +
  • +
+
+
+ + + +
+

Timeline of developer tool blocks

+ +

+ Here is a chronological look at every significant instance of developer-relevant platforms being blocked by Indian ISPs. Each entry includes the year, the service affected, which ISPs enforced the block, and what triggered it. +

+ + +
+
+
2014
+

GitHub blocked

+
+
+ ISPs: Multiple + · + Duration: Brief (days) +
+

+ India's Department of Telecom ordered ISPs to block GitHub after ISIS-related recruitment content was found hosted on the platform. The block affected the entire github.com domain, disrupting millions of developers. It was lifted after widespread backlash from the tech community and media coverage highlighting the collateral damage. +

+
+ + +
+
+
2020
+

Multiple VPN services blocked

+
+
+ ISPs: Jio, Airtel, and others + · + Duration: Ongoing +
+

+ Following government directives, several popular VPN services had their websites and connection endpoints blocked. For developers who relied on VPNs to access restricted resources, test geo-specific features, or secure their connections on public networks, this created significant workflow disruptions. +

+
+ + +
+
+
Aug 2025
+

Linktree blocked

+
+
+ ISPs: Multiple + · + Duration: Ongoing +
+

+ Linktree, the popular link-in-bio platform used by creators and developers to aggregate their online presence, was blocked on multiple Indian ISPs. The block affected every Linktree page, not just specific profiles. Developers using Linktree for project pages, portfolio links, and documentation hubs lost access. +

+
+ + +
+
+
Aug 2025
+

Dailymotion and TheMovieDB blocked on BSNL

+
+
+ ISP: BSNL + · + Duration: Ongoing +
+

+ BSNL blocked access to Dailymotion and TheMovieDB (TMDB). While Dailymotion is primarily a video platform, TMDB is widely used by developers building media applications. Its API powers thousands of movie and TV apps. Developers on BSNL lost the ability to test and develop against the TMDB API entirely. +

+
+ + +
+
+
Oct 2025
+

Medium blocked on multiple ISPs

+
+
+ ISPs: Jio, BSNL, and others + · + Duration: Intermittent +
+

+ Medium, one of the largest platforms for technical writing and developer tutorials, was blocked on several Indian ISPs. This cut off access to millions of programming tutorials, architecture deep-dives, and technical guides that developers rely on daily. The block was particularly damaging because many official documentation resources and company engineering blogs are hosted on Medium. +

+
+ + +
+
+
Feb 2026
+

Supabase blocked on Jio, Airtel, ACT Fibernet

+
+
+ ISPs: Jio, Airtel, ACT Fibernet + · + Duration: Ongoing +
+

+ The most impactful block for developers yet. All subdomains under *.supabase.co were DNS-blocked following a Section 69A order. This broke every production app using Supabase for database queries, authentication, file storage, and real-time subscriptions. The fix requires a reverse proxy. +

+
+ + +
+
+
Feb 2026
+

Firebase blocked on BSNL

+
+
+ ISP: BSNL + · + Duration: Ongoing +
+

+ Google's Firebase platform was blocked on BSNL around the same time as the Supabase block. This created a double backend crisis where both of India's most popular Backend-as-a-Service platforms became unreachable on certain networks. Developers using Firebase for authentication, Firestore, and cloud functions on BSNL connections were left scrambling. +

+
+
+ + + +
+

Why developer tools get caught in the crossfire

+ +

+ The core issue is that India's blocking mechanism is content-agnostic at the domain level. When a blocking order targets a specific piece of content hosted on a platform, ISPs do not have the technical capability (or the mandate) to block just that one resource. Instead, they block the entire domain. +

+ +

+ This means that one objectionable page hosted on GitHub can result in all of github.com being blocked. One problematic project on Supabase can result in every *.supabase.co subdomain becoming unreachable. The collateral damage is enormous. +

+ +
+

The collateral damage math

+

+ Consider the Supabase block. Supabase hosts over a million projects. The blocking order may have targeted a handful of specific projects, but the DNS-level block affected all of them. Every developer, every startup, every production app using Supabase in India was collateral damage. +

+

+ The same pattern played out with GitHub in 2014. A few pages of objectionable content led to the entire platform being blocked, affecting millions of repositories and the developers who depended on them. +

+
+
+ + + +
+

The net neutrality problem

+ +

+ India adopted strong net neutrality regulations through TRAI (Telecom Regulatory Authority of India) recommendations in 2017. These regulations prohibit ISPs from arbitrarily blocking or throttling specific websites or services. In theory, this should protect developer tools from being blocked. +

+ +

+ In practice, Section 69A of the IT Act overrides net neutrality protections. When the government issues a blocking order under Section 69A, ISPs are legally required to comply, regardless of net neutrality rules. The blocking order takes precedence. +

+ +

+ This creates a legal framework where ISPs cannot choose to block websites on their own, but the government can direct them to block anything it deems necessary. The lack of transparency in the process means developers have no way to predict which services might be blocked next. +

+ +
+
+ +

+ The unpredictability problem: Digital rights organizations have noted that the lack of transparency in India's blocking process means developers cannot know in advance which platforms are safe to build on. You might invest months building on a service only to discover that your Indian users cannot reach it one morning. +

+
+
+
+ + + +
+

What developers can do

+ +

+ Given the history, it is clear that ISP-level blocks are not a one-time event. They are a recurring pattern that will continue to affect developer tools. Here are concrete steps you can take to protect your applications. +

+ +
+

1. Build with proxy layers from day one

+

+ Do not connect your frontend directly to third-party API domains. Route all external API traffic through a domain you control. If your backend is at api.yourapp.com and it proxies to Supabase, a block on supabase.co does not affect your users at all. JioBase provides this as a managed service. +

+
+ +
+

2. Use environment variables for all external URLs

+

+ Never hardcode third-party API URLs. Use environment variables so you can swap endpoints in minutes without redeploying your entire application. When the Supabase block hit, developers who used environment variables could switch to a proxy URL by updating a single config value. +

+
+ +
+

3. Monitor for blocks proactively

+

+ Set up health checks that test connectivity from Indian networks. Use tools like the ISP block testing guide to check if your backend is reachable. Catch blocks before your users report them. +

+
+ +
+

4. Plan for ISP interference in your architecture

+

+ Treat ISP blocks as a failure mode in your system design, just like you would plan for server outages or database failures. Have a fallback domain ready. Use Cloudflare Workers or similar edge infrastructure that gives you control over the domain your users connect to. The Worker Generator tool can help you set up a self-hosted proxy as a backup. +

+
+
+ + + +
+

Why JioBase exists

+ +

+ JioBase was born from this exact problem. When the Supabase block hit in February 2026, thousands of Indian developers were left with broken production apps and no clear fix. Changing DNS did not work for end users. VPNs were not a production solution. Self-hosting a proxy required Cloudflare knowledge that not everyone had. +

+ +

+ JioBase is a managed reverse proxy that routes your Supabase API traffic through Cloudflare's edge network. Your users connect to yourapp.jiobase.com instead of yourproject.supabase.co. Since the JioBase domain is not blocked, everything works. The ISP never sees supabase.co in any DNS query or TLS handshake. +

+ +

+ It takes less than five minutes to set up. You change one URL in your Supabase client configuration and deploy. No SDK changes, no code refactoring, no infrastructure to manage. Your app becomes resilient to ISP blocks immediately. +

+
+ + + +
+

Frequently Asked Questions

+ +
+
+ + Has India permanently blocked any developer tool? + + +
+ Most blocks on developer tools have been temporary or intermittent, lasting from days to months. The GitHub block in 2014 lasted only a few days after public backlash. However, the Supabase and Firebase blocks from February 2026 are still active as of this writing. There is no guarantee that any block will be lifted, which is why building with proxy layers is the safest approach. +
+
+ +
+ + Can developers challenge a blocking order in court? + + +
+ In theory, yes. Section 69A blocking orders can be challenged in Indian courts. However, the process is slow, expensive, and the orders themselves are often classified, making it difficult to even know the legal basis for the block. For most individual developers and startups, a technical workaround like a reverse proxy is far more practical than legal action. +
+
+ +
+ + Which developer tools are most at risk of being blocked next? + + +
+ There is no way to predict this with certainty because of the opaque nature of the blocking process. Any platform that hosts user-generated content is potentially at risk. This includes database providers, hosting platforms, CDNs, and API services. The safest strategy is to ensure your app never exposes third-party API domains directly to end users. Route everything through your own domain or a proxy service. +
+
+
+
+ + + +
+
+

+ Build block-proof apps +

+

+ ISP blocks are not going away. Protect your Supabase-powered app with JioBase and ensure every user in India can reach your product, regardless of which ISP they use. +

+ +

+ Free tier includes 1 proxy app and 50,000 requests/month. No credit card required. +

+
+
+ + + + + +
diff --git a/apps/web/src/routes/blog/india-disrupts-supabase-blocking-order/+page.svelte b/apps/web/src/routes/blog/india-disrupts-supabase-blocking-order/+page.svelte new file mode 100644 index 0000000..7dc8499 --- /dev/null +++ b/apps/web/src/routes/blog/india-disrupts-supabase-blocking-order/+page.svelte @@ -0,0 +1,656 @@ + + + + India Disrupts Access to Supabase with Government Blocking Order | JioBase + + + + + + + + + + + + + + + {@html ``} + + +
+ + +
+
+ News + + · + 6 min read +
+ +

+ India Disrupts Access to Supabase with Government Blocking Order +

+ +

+ A government blocking order issued under Section 69A of the IT Act has disrupted access to Supabase across India's largest ISPs. Thousands of production apps are broken, startups are scrambling, and developers are searching for answers. +

+
+ +
+ + + +
+

What happened

+ +

+ Around February 24, 2026, India's Ministry of Electronics and Information Technology (MeitY) issued a blocking order under Section 69A of the Information Technology Act, 2000. The directive instructed Indian Internet Service Providers to block access to all subdomains under *.supabase.co, the API domain used by every Supabase-powered application. +

+ +

+ Within hours, major ISPs began complying. Reliance Jio, Bharti Airtel, ACT Fibernet, and BSNL all started poisoning DNS responses for Supabase's API endpoints. Production applications that relied on Supabase for database queries, authentication, file storage, and realtime connections stopped functioning for Indian users overnight. +

+ +

+ Supabase, a $5 billion open-source Firebase alternative, found itself cut off from its 4th largest market. India accounts for approximately 9% of Supabase's global traffic, making this one of the most significant disruptions the platform has faced since its launch. +

+ +
+
+ +

+ No public announcement was made. Like all Section 69A blocking orders, the directive is confidential. ISPs are legally prohibited from disclosing the order. Developers discovered the block only when their apps stopped working. +

+
+
+
+ + + +
+

The scale of disruption

+ +

+ The numbers tell the story of how far-reaching this disruption is. India is not a minor market for Supabase. It is one of the platform's core user bases. +

+ +
+
+

~500M

+

Jio subscribers alone

+
+
+

9%

+

of Supabase global traffic from India

+
+
+

4th

+

largest market for Supabase worldwide

+
+
+

~$5B

+

Supabase valuation

+
+
+ +

+ The affected ISPs cover the vast majority of Indian internet users. Between Jio (approximately 500 million subscribers), Airtel, ACT Fibernet, and BSNL, almost every internet connection in the country is subject to the block. BSNL, the government-owned ISP, was already blocking Firebase since August 2025 and is now enforcing the Supabase block as well, leaving developers on BSNL with both major backend platforms unreachable. +

+
+ + + +
+

Which ISPs are enforcing the block

+ +

+ The blocking order has been confirmed across India's largest internet service providers. Each ISP has implemented the block through DNS poisoning on their resolvers. +

+ +
+
+
+ J +
+
+

Reliance Jio

+

India's largest ISP with approximately 500 million subscribers. Block confirmed on 4G/5G mobile networks and JioFiber broadband. Jio's massive subscriber base means this single ISP alone makes Supabase unreachable for hundreds of millions of potential end users.

+
+
+ +
+
+ A +
+
+

Bharti Airtel

+

Over 380 million subscribers. Block confirmed on Airtel broadband and mobile data connections. Both prepaid and postpaid users are affected.

+
+
+ +
+
+ A +
+
+

ACT Fibernet

+

Popular broadband provider among developers in major metros. Block confirmed across Bangalore, Hyderabad, Chennai, and other cities where the developer community is concentrated.

+
+
+ +
+
+ B +
+
+

BSNL

+

Government-owned ISP. Already blocking Firebase since August 2025. Now enforcing the Supabase block as well. Developers on BSNL face the worst situation with both Firebase and Supabase unreachable.

+
+
+
+
+ + + +
+

How the block works: DNS poisoning explained

+ +

+ The blocking mechanism is DNS poisoning. When your app or browser tries to resolve a *.supabase.co domain, the ISP's DNS resolver returns a fake IP address (a sinkhole) instead of Supabase's real server IP. The connection attempt then times out or fails entirely. +

+ +

+ Critically, the block only targets *.supabase.co (the API domain). The marketing website at supabase.com remains fully accessible. This creates a confusing situation: developers can log in to the Supabase dashboard and see everything working normally, but their production apps cannot reach the API. +

+ +
+
+
+ + Blocked +
+

*.supabase.co

+

All project API endpoints including REST API, Auth, Storage, Edge Functions, and Realtime WebSockets.

+
+ +
+
+ + Not blocked +
+

supabase.com

+

Marketing website, documentation, and dashboard. You can still manage your project, just not reach it from India.

+
+
+ +

+ You can verify the block on your own network with a quick DNS lookup: +

+ +
+
+
+
+
+ terminal +
+
+
# Check if your ISP is poisoning Supabase DNS
+
$ nslookup yourproject.supabase.co
+
Address: 49.44.79.236 ← sinkhole IP = ISP block confirmed
+
# Compare with a public DNS resolver
+
$ nslookup yourproject.supabase.co 1.1.1.1
+
Address: 13.233.x.x ← real Supabase IP
+
+
+ +

+ If your ISP DNS returns an IP in the 49.44.x.x range while a public DNS resolver like 1.1.1.1 returns a different IP, the block is confirmed on your network. For a more detailed diagnostic, see our ISP block testing guide. +

+
+ + + +
+

Impact on Indian developers

+ +

+ The blocking order did not come with a warning. Developers discovered their apps were broken only when end users started reporting errors. The fallout has been immediate and widespread. +

+ +
+
+
+ + Production apps broken +
+

SaaS products, mobile apps, internal business tools, and customer-facing web applications that depend on Supabase all stopped working for Indian users. End users see ERR_CONNECTION_TIMED_OUT errors with no explanation.

+
+ +
+
+ + Startups losing revenue +
+

Early-stage startups that built on Supabase found their products completely non-functional. For companies with paying customers, every hour of downtime means lost revenue, damaged trust, and potential churn. Some founders discovered the issue only through angry customer emails.

+
+ +
+
+ + Student projects and hackathons +
+

Engineering students, bootcamp participants, and hackathon teams using Supabase for projects and assignments found their work rendered inaccessible. Projects built for portfolios and job applications stopped demonstrating correctly.

+
+ +
+
+ + Trust in cloud infrastructure eroded +
+

The block raises a fundamental question for every Indian developer: can you rely on international cloud platforms? If Supabase can be disrupted overnight, so can any other service. This uncertainty makes architecture decisions significantly more difficult.

+
+
+
+ + + +
+

Supabase's response

+ +

+ Supabase acknowledged the block on their community channels and confirmed they were investigating the situation. On February 26, Supabase posted on X (formerly Twitter) publicly tagging India's IT Minister Ashwini Vaishnaw, asking for clarity on the blocking order. +

+ +

+ The post gained significant traction in the Indian developer community. However, it was deleted shortly afterward. No official explanation was provided for the deletion. Supabase has stated that they continue to engage with Indian government authorities through private channels. +

+ +

+ Supabase has recommended that developers use a reverse proxy as a workaround. The platform's own documentation now includes guidance on routing traffic through Cloudflare Workers or similar proxy infrastructure to bypass the DNS-level block. +

+ +
+
+ +

+ Context on valuation and market presence: Supabase is valued at approximately $5 billion and serves developers in over 190 countries. India at 9% of global traffic represents a significant share of Supabase's user base. The platform is the most popular open-source alternative to Firebase, making the block especially impactful given that Firebase is also blocked on BSNL. +

+
+
+
+ + + +
+

Community response and workarounds

+ +

+ The Indian developer community mobilized quickly, sharing diagnostics and workarounds across X, Reddit, Discord, and developer forums. Several approaches emerged, but not all of them work for production applications. +

+ +
+
+
+ + Switching DNS resolvers (limited effectiveness) +
+

Some developers tried switching to public DNS resolvers like 1.1.1.1 or 8.8.8.8. Results are inconsistent. This may work on some ISPs but fails on others, likely due to DNS interception or SNI-based filtering. Crucially, this only fixes it for your own machine. Your end users still cannot reach Supabase.

+
+ +
+
+ + Using a VPN (not viable for production) +
+

A VPN bypasses the block for the developer's own connection, but it does nothing for end users. You cannot ask every user of your app to install and run a VPN. This is a development workaround at best, not a production solution.

+
+ +
+
+ + Reverse proxy through Cloudflare (recommended) +
+

The only production-grade fix. Route your Supabase traffic through an unblocked domain on Cloudflare's edge network. The DNS block targets *.supabase.co specifically. A proxy domain resolves normally, and the Cloudflare Worker forwards the request to Supabase server-side where there are no ISP restrictions.

+
+
+
+ + + +
+

Why standard fixes fail your end users

+ +

+ When a developer encounters a block, the instinct is to change DNS settings or use a VPN. These approaches might restore access on your own machine, but they do nothing for the people actually using your app. +

+ +

+ Consider the problem from the end user's perspective. A customer opens your web app or mobile app on their Jio connection. The app tries to reach yourproject.supabase.co from their browser. Their ISP intercepts the DNS query and returns a sinkhole IP. The connection fails. The user has no idea why. They just see an error or a loading screen that never resolves. +

+ +

+ You cannot ask your users to change their DNS settings. You cannot require them to install a VPN. The fix has to be invisible to the end user. That is why a reverse proxy is the correct architectural solution. The user's browser connects to your proxy domain (which is not blocked), and the proxy handles the Supabase communication server-side. +

+ + +
+
+
+

User's Browser

+

on Jio / Airtel

+
+ +
+ + unblocked +
+ +
+

Proxy

+

Cloudflare Edge

+
+ +
+ + server-side +
+ +
+

Supabase

+

*.supabase.co

+
+
+
+ +

+ The proxy makes the block invisible to your users. They connect to your proxy domain, which resolves normally on every ISP. The Cloudflare Worker on the edge receives the request and forwards it to Supabase's servers. The ISP block only applies to client-side DNS resolution, which the proxy bypasses entirely. +

+
+ + + +
+

The real fix: reverse proxy through Cloudflare

+ +

+ JioBase is a managed reverse proxy built on Cloudflare Workers specifically for this situation. It gives you an unblocked proxy URL that routes all Supabase traffic through Cloudflare's global edge network. +

+ +

+ The setup requires changing a single URL in your Supabase client initialization. Your anon key, RLS policies, database schema, authentication rules, and everything else stays exactly the same. +

+ +
+
+
+
1
+

Create a free JioBase account

+
+

Sign up at jiobase.com/register. No credit card required.

+
+ +
+
+
2
+

Add your Supabase project

+
+

Enter your Supabase project URL and pick a slug. You get a proxy URL like myapp.jiobase.com.

+
+ +
+
+
3
+

Update one line of code

+
+

Replace the Supabase URL in your client initialization. Everything else remains unchanged.

+
+
+ +
+
+
+
+
+ lib/supabase.ts +
+
import {'{'} createClient {'}'} from '@supabase/supabase-js'
+
+// Before: blocked by Indian ISPs
+// const supabase = createClient('https://abcdefgh.supabase.co', key)
+
+// After: works on every Indian network
+const supabase = createClient(
+  'https://myapp.jiobase.com',
+  'your-anon-key'
+)
+
+ +

+ For step-by-step instructions with framework-specific examples, read the complete fix guide. If you prefer to self-host the proxy, use our Cloudflare Worker Generator to create a deployment-ready worker in seconds. We also have a Next.js integration guide for teams using that framework. +

+
+ + + +
+

A pattern of blocking developer tools in India

+ +

+ Supabase is not the first developer platform to face a blocking order in India. The pattern of ISP-level blocks disrupting development infrastructure has been recurring: +

+ +
    +
  • + + GitHub (raw.githubusercontent.com) was intermittently blocked, breaking package downloads and CI/CD pipelines +
  • +
  • + + Firebase has been blocked on BSNL since August 2025, affecting Firestore, Cloud Functions, and Authentication +
  • +
  • + + Pastebin has been blocked since 2017 on many ISPs, affecting code snippet sharing +
  • +
  • + + Medium was temporarily blocked in 2020, taking thousands of programming tutorials offline +
  • +
  • + + Telegram has faced blocks on multiple ISPs at various times, disrupting developer community channels +
  • +
+ +

+ This pattern highlights a fundamental problem: platform-level blocks punish thousands of legitimate developers and businesses because of content posted by a small number of users. The blocking order targets the entire *.supabase.co domain rather than specific offending projects. For a deeper analysis, read our history of developer tool blocks in India. +

+
+ + + +
+

What comes next

+ +

+ There is no confirmed timeline for the block being lifted. Historically, some blocks in India have been temporary (Medium was unblocked after weeks), while others have persisted for years (Pastebin remains blocked since 2017). The confidential nature of Section 69A orders means there is no transparent appeals process. +

+ +

+ Supabase has stated they are working with Indian government officials to resolve the situation. Developer advocacy organizations including the Internet Freedom Foundation (IFF) are tracking the block. Community pressure has historically influenced the review process for blocking orders, and developers are encouraged to raise awareness through social media, elected representatives, and industry groups. +

+ +

+ Regardless of when the block is lifted, the lesson for production applications is clear: your architecture should not depend on any single domain remaining accessible in every region. A reverse proxy layer ensures your app works regardless of ISP-level DNS restrictions. Build resilient infrastructure now, and you will not be caught off guard by the next blocking order. +

+
+ + + +
+

Frequently Asked Questions

+ +
+
+ + Why did the Indian government block Supabase? + + + + +
No official reason has been disclosed. Section 69A blocking orders are confidential, and ISPs are legally prohibited from revealing why a domain was blocked. The most likely explanation is that specific content or projects hosted on Supabase's infrastructure violated Indian law, and the entire *.supabase.co domain was blocked rather than individual offending projects.
+
+ +
+ + Can I just change my DNS to 1.1.1.1 or 8.8.8.8 to fix this? + + + + +
Changing your own DNS resolver may restore access on your development machine on some ISPs, but it will not fix the problem for your end users. Your users are on ISP-provided DNS by default. You cannot ask them to change their DNS settings. For production apps, a reverse proxy is the correct solution because it makes the fix transparent to end users.
+
+ +
+ + Is using a reverse proxy to bypass the block legal? + + + + +
Section 69A blocking orders instruct ISPs to block specific domains. Using a reverse proxy routes traffic through a different domain, similar to how CDNs and load balancers work. There is no Indian law that prohibits the use of proxy servers or CDN infrastructure for legitimate application traffic. That said, this is not legal advice. Consult a qualified attorney for guidance on your specific situation.
+
+ +
+ + Is Firebase also blocked in India? + + + + +
Firebase has been blocked on BSNL since August 2025. Multiple Firebase services including Firestore, Cloud Functions, and Authentication are unreachable on BSNL and some regional ISPs. With the Supabase block now active on Jio, Airtel, and ACT Fibernet, developers on BSNL face the worst situation with both major backend platforms blocked. Read more in our Firebase and Supabase block comparison.
+
+ +
+ + Will the Supabase block be lifted? + + + + +
There is no way to know. Some Indian internet blocks have been lifted within weeks (Medium in 2020), while others have persisted for years (Pastebin since 2017, Firebase on BSNL since August 2025). Supabase is engaging with Indian authorities, but the confidential nature of 69A orders means there is no public timeline. Developers with production apps should not wait and should implement a proxy solution now.
+
+ +
+ + Could JioBase itself get blocked? + + + + +
Any domain can theoretically be subject to a blocking order. However, JioBase is a proxy infrastructure service, not a content host. It does not store user data. JioBase also supports custom domains, so you can use your own domain as the proxy endpoint. This removes dependency on any single third-party domain. If you self-host using our Worker Generator, you have full control over the domain.
+
+
+
+ + + +
+
+

+ Get your Supabase app working again +

+

+ Do not wait for the blocking order to be reversed. Route your Supabase traffic through JioBase and restore access for every Indian user in under five minutes. +

+ +

+ Free tier includes 1 proxy app and 50,000 requests/month. No credit card required. +

+
+
+ + + + + +
diff --git a/apps/web/src/routes/blog/proxy-supabase-cloudflare-workers/+page.svelte b/apps/web/src/routes/blog/proxy-supabase-cloudflare-workers/+page.svelte index aae5e68..0a711e9 100644 --- a/apps/web/src/routes/blog/proxy-supabase-cloudflare-workers/+page.svelte +++ b/apps/web/src/routes/blog/proxy-supabase-cloudflare-workers/+page.svelte @@ -11,6 +11,7 @@ + {@html ``}
diff --git a/apps/web/src/routes/blog/supabase-alternatives-india/+page.svelte b/apps/web/src/routes/blog/supabase-alternatives-india/+page.svelte index 6c8f8a7..afae89a 100644 --- a/apps/web/src/routes/blog/supabase-alternatives-india/+page.svelte +++ b/apps/web/src/routes/blog/supabase-alternatives-india/+page.svelte @@ -19,6 +19,7 @@ + {@html ``}
diff --git a/apps/web/src/routes/blog/supabase-blocked-india-fix/+page.svelte b/apps/web/src/routes/blog/supabase-blocked-india-fix/+page.svelte index 25eaef9..a85eeb5 100644 --- a/apps/web/src/routes/blog/supabase-blocked-india-fix/+page.svelte +++ b/apps/web/src/routes/blog/supabase-blocked-india-fix/+page.svelte @@ -13,6 +13,7 @@ + {@html ``}
diff --git a/apps/web/src/routes/blog/supabase-err-connection-timed-out-india/+page.svelte b/apps/web/src/routes/blog/supabase-err-connection-timed-out-india/+page.svelte index d3eb257..48cdc73 100644 --- a/apps/web/src/routes/blog/supabase-err-connection-timed-out-india/+page.svelte +++ b/apps/web/src/routes/blog/supabase-err-connection-timed-out-india/+page.svelte @@ -19,6 +19,7 @@ + {@html ``}
diff --git a/apps/web/src/routes/blog/supabase-india-block-timeline/+page.svelte b/apps/web/src/routes/blog/supabase-india-block-timeline/+page.svelte new file mode 100644 index 0000000..de2c4f4 --- /dev/null +++ b/apps/web/src/routes/blog/supabase-india-block-timeline/+page.svelte @@ -0,0 +1,507 @@ + + + + Supabase India: Complete Timeline of the Block (Feb 2026) | JioBase + + + + + + + + + + + + + + + {@html ``} + + +
+ + +
+
+ Timeline + + · + 7 min read +
+ +

+ Supabase India: Complete Timeline of the Block (Feb 2026) +

+ +

+ A complete timeline of the Supabase block in India - from the first reports to the global news coverage. Here is every key event, day by day. +

+
+ +
+ + + +
+

The timeline

+ +

+ The Supabase block in India did not happen with a single announcement. It unfolded over five days, starting with a quiet government order and escalating into a full-blown crisis for thousands of Indian developers. Here is how it played out. +

+ + +
+
+
24
+
+

Monday, February 24

+

The order drops

+
+
+
+
+

+ A government order is issued under Section 69A of the Information Technology Act. The order directs Indian ISPs to block access to all subdomains under *.supabase.co. As with all 69A orders, the directive is confidential. No public announcement is made. +

+
+
+

+ ISPs begin DNS-blocking. Jio, Airtel, and ACT Fibernet start poisoning DNS responses for *.supabase.co, returning sinkhole IP addresses instead of Supabase's real servers. Apps that depend on Supabase begin failing silently. Users see ERR_CONNECTION_TIMED_OUT errors without any explanation. +

+
+
+

+ Scattered reports appear on developer Slack channels and Discord servers. Most developers initially assume the issue is on Supabase's end or a local network problem. Few suspect an ISP-level block at this point. +

+
+
+
+ + +
+
+
25
+
+

Tuesday, February 25

+

Reports flood social media

+
+
+
+
+

+ Developer reports flood social media. X (formerly Twitter) sees dozens of posts from Indian developers reporting broken apps. The Supabase community forums light up with threads from India-based developers asking why their projects have stopped working. +

+
+
+

+ Pattern recognition kicks in. Developers start comparing notes across ISPs. When reports come in from Jio, Airtel, and ACT Fibernet users simultaneously, the community begins to suspect a coordinated DNS block rather than a Supabase outage. Developers run nslookup and confirm sinkhole IPs. +

+
+
+

+ Early workaround discussions begin. Some developers try switching to public DNS resolvers like 1.1.1.1 or 8.8.8.8. Results are inconsistent. The fix works for some ISPs but not others, likely due to Deep Packet Inspection (DPI) blocking at the SNI level. +

+
+
+
+ + +
+
+
26
+
+

Wednesday, February 26

+

Supabase responds

+
+
+
+
+

+ Supabase officially acknowledges the block. The Supabase team confirms on their community channels that Indian ISPs are blocking *.supabase.co and that they are investigating the situation. +

+
+
+

+ Supabase posts on X tagging India's IT Minister Ashwini Vaishnaw, asking for clarification on the block. The post gains significant traction in the Indian developer community. Shortly after, the post is deleted. No official explanation is given for why it was removed. +

+
+
+

+ Supabase recommends reverse proxying as a workaround. Developers begin experimenting with Cloudflare Workers and Nginx reverse proxies to route traffic through unblocked domains. +

+
+
+
+ + +
+
+
27
+
+

Thursday, February 27

+

Global coverage

+
+
+
+
+

+ TechCrunch, MediaNama, and other outlets publish coverage. The story goes global. Articles detail the impact on Indian developers and the broader implications of blocking developer infrastructure. +

+
+
+

+ Key data points emerge: India represents approximately 9% of Supabase's global traffic, making it the 4th largest market for the platform. Supabase's valuation is reported at roughly $5 billion. The block affects thousands of production applications serving millions of Indian end users. +

+
+
+

+ Developer advocacy organizations including the Internet Freedom Foundation (IFF) begin tracking the block. Comparisons are drawn to previous blocks on GitHub, Medium, Pastebin, and other developer tools. +

+
+
+
+ + +
+
+
28
+
+

Friday, February 28

+

Block persists, workarounds solidify

+
+
+
+
+

+ The block remains fully active. No sign of the government order being reversed. ISPs continue to enforce DNS poisoning on all *.supabase.co subdomains. +

+
+
+

+ Community workarounds mature. Reverse proxy solutions become the accepted approach. Developers share Cloudflare Worker configurations, DNS switching guides, and VPN recommendations. Managed proxy services like JioBase emerge to provide ready-to-use solutions. +

+
+
+

+ Indian startup founders voice concerns about the reliability of cloud infrastructure in India. The block has prompted discussions about building resilient architecture that does not depend on any single domain remaining accessible. +

+
+
+
+
+ + + +
+

What is blocked vs what is not

+ +

+ The block is targeted at a specific domain. Understanding the distinction is important for diagnosing and fixing the problem. +

+ +
+
+
+ + Blocked +
+

*.supabase.co

+

All project API endpoints. This includes REST API (PostgREST), Authentication, Storage, Edge Functions, GraphQL, and Realtime WebSockets. Every production app that calls Supabase is affected.

+
+ +
+
+ + Not blocked +
+

supabase.com

+

The marketing website, documentation, and dashboard. You can still log in to Supabase, view your projects, manage settings, and read docs. You just cannot reach the API from within India.

+
+
+ +
+
+ +

+ This creates a confusing situation. Developers can access the Supabase dashboard and see their project running normally. But their production app cannot reach the API. If you are not aware of the block, this looks like a bug in your code or a Supabase outage, when it is neither. +

+
+
+
+ + + +
+

ISPs enforcing the block

+ +

+ The block has been confirmed across the largest Indian ISPs. Together, these providers cover the vast majority of internet users in the country. +

+ +
+
+
+ J +
+
+

Reliance Jio

+

Approximately 500 million subscribers. India's largest ISP. Block confirmed on both 4G/5G mobile networks and JioFiber broadband connections.

+
+
+ +
+
+ A +
+
+

Bharti Airtel

+

Over 380 million subscribers. Block confirmed on Airtel broadband and mobile data. Both prepaid and postpaid connections are affected.

+
+
+ +
+
+ A +
+
+

ACT Fibernet

+

Regional broadband provider popular among developers. Block confirmed across multiple cities including Bangalore, Hyderabad, and Chennai.

+
+
+ +
+
+ B +
+
+

BSNL

+

Government-owned ISP. Already blocking Firebase since August 2025. Supabase block status on BSNL is being confirmed. BSNL users may face blocks on both Firebase and Supabase simultaneously.

+
+
+
+ +

+ Reports from Vi (Vodafone Idea) and smaller regional ISPs are still emerging. If you are experiencing Supabase connectivity issues on any Indian ISP, you can run a quick diagnostic test to confirm whether it is an ISP block. +

+
+ + + +
+

Why this matters

+ +

+ The Supabase block is not just a technical inconvenience. It has significant implications for India's developer ecosystem and the startups built on Supabase. +

+ +
+
+
+ + India is 9% of Supabase's global traffic +
+

India is Supabase's 4th largest market worldwide. That translates to tens of thousands of active projects and an unknown number of production applications serving Indian end users.

+
+ +
+
+ + Thousands of production apps affected +
+

Every app that uses Supabase for its backend broke overnight. SaaS products, mobile apps, internal tools, MVPs, hackathon projects, student applications, and freelance client work all went dark on Indian networks.

+
+ +
+
+ + Startups broken overnight +
+

Early-stage startups that chose Supabase as their backend found their products completely non-functional for Indian users. For companies with paying customers, every hour of downtime means lost revenue and damaged trust. Some founders discovered the issue only when customers reported the app was not working.

+
+ +
+
+ + Developer trust eroded +
+

The block raises a fundamental question: can Indian developers rely on international cloud services? If Supabase can be blocked today, other platforms could follow. This uncertainty makes it harder for developers to commit to any single backend provider.

+
+
+
+ + + +
+

How to verify the block on your network

+ +

+ If you suspect your network is affected, run this quick DNS lookup from your terminal: +

+ +
+
+
+
+
+ terminal +
+
+
$ nslookup yourproject.supabase.co
+
Server: 198.18.0.1
+
Address: 198.18.0.1#53
+
Non-authoritative answer:
+
Name: yourproject.supabase.co
+
Address: 49.44.79.236 ← sinkhole IP (ISP block confirmed)
+
+
+ +

+ If the returned IP address starts with 49.44.x.x instead of a legitimate Supabase server IP, your ISP is DNS-poisoning the domain. For a more thorough diagnostic, check our complete ISP block testing guide. +

+ +

+ You can also compare results by querying a public DNS directly: +

+ +
+
+
+
+
+ terminal +
+
+
# Compare ISP DNS vs Cloudflare's public DNS
+
$ nslookup yourproject.supabase.co
+
Address: 49.44.79.236 ← ISP (sinkhole)
+
$ nslookup yourproject.supabase.co 1.1.1.1
+
Address: 13.233.x.x ← Cloudflare DNS (real IP)
+
+
+
+ + + +
+

The fix: reverse proxy through Cloudflare

+ +

+ The most reliable solution is to route your Supabase traffic through a domain that is not blocked. A reverse proxy sits between your app and Supabase, forwarding requests through an unblocked domain on Cloudflare's global edge network. +

+ +

+ JioBase is a managed reverse proxy that does this for you. Instead of setting up your own Cloudflare Worker, configuring DNS, handling CORS, and managing WebSocket upgrades, you get a ready-to-use proxy endpoint. +

+ +

+ The setup takes less than five minutes: +

+ +
+
+
+
1
+

Sign up at JioBase

+
+

Create a free account at jiobase.com/register. No credit card required.

+
+ +
+
+
2
+

Create a proxy app

+
+

Enter your Supabase project URL and choose a slug. You will get a proxy URL like myapp.jiobase.com.

+
+ +
+
+
3
+

Swap the URL in your code

+
+

Replace yourproject.supabase.co with your JioBase proxy URL. Your API keys stay the same.

+
+
+ +

+ For a detailed walkthrough with code examples, read our complete fix guide. If you prefer to self-host, use our Worker Generator to create a ready-to-deploy Cloudflare Worker. +

+
+ + + +
+

Frequently Asked Questions

+ +
+
+ + When exactly did the Supabase block start? + + +
+ The blocking order was issued on February 24, 2026, under Section 69A of the IT Act. ISPs began implementing the DNS block on the same day. Most developers first noticed the issue on February 25 when their production apps started failing on Jio, Airtel, and ACT Fibernet networks. +
+
+ +
+ + Is Supabase still blocked in India as of today? + + +
+ Yes. As of February 28, 2026, the block remains fully active on Jio, Airtel, and ACT Fibernet. There is no confirmed timeline for when it will be lifted. Using a reverse proxy is the recommended approach for production applications. +
+
+ +
+ + Why did Supabase delete the post tagging India's IT Minister? + + +
+ No official reason was given. It is common for companies to adjust their public communication strategy when dealing with government actions, especially in jurisdictions where the company has significant user bases. Supabase has continued to engage with Indian authorities through private channels. +
+
+
+
+ + + +
+
+

+ Do not wait for the block to be lifted +

+

+ History shows that ISP blocks in India can persist for months or years. Get your Supabase-powered app working again in under five minutes with JioBase. +

+ +

+ Free tier includes 1 proxy app and 50,000 requests/month. No credit card required. +

+
+
+ + + + + +
diff --git a/apps/web/src/routes/blog/supabase-network-connectivity-problems-india/+page.svelte b/apps/web/src/routes/blog/supabase-network-connectivity-problems-india/+page.svelte new file mode 100644 index 0000000..3dbe5e4 --- /dev/null +++ b/apps/web/src/routes/blog/supabase-network-connectivity-problems-india/+page.svelte @@ -0,0 +1,751 @@ + + + + Supabase Network Connectivity Problems in India: Causes, Diagnosis, and Fix | JioBase + + + + + + + + + + + + + + + {@html ``} + + +
+ + +
+
+ Troubleshooting + + · + 7 min read +
+ +

+ Supabase Network Connectivity Problems in India: Causes, Diagnosis, and Fix +

+ +

+ If your Supabase-powered app suddenly stopped working for users in India, you are not alone. Thousands of developers are seeing timeout errors, failed API calls, and broken WebSocket connections. The Supabase status page may reference "network connectivity problems" in the India region, but the root cause is not on Supabase's end. Here is what is really happening and how to fix it. +

+
+ +
+ + + +
+

The symptoms: what you are seeing

+ +

+ Developers across India are reporting the same cluster of errors. If any of the following look familiar, you are dealing with the same underlying issue: +

+ +
+
+
1
+

+ ERR_CONNECTION_TIMED_OUT in Chrome or Brave when your app tries to reach the Supabase API +

+
+
+
2
+

+ TypeError: Failed to fetch or fetch failed in your JavaScript console +

+
+
+
3
+

+ WebSocket connections for Supabase Realtime dropping immediately or failing to establish +

+
+
+
4
+

+ Supabase Auth calls (signUp, signInWithPassword) hanging indefinitely with no response +

+
+
+
5
+

+ ECONNREFUSED or ETIMEDOUT in Node.js server-side code running on Indian hosting providers +

+
+
+ +
+
+ +

+ Key observation: The Supabase dashboard at supabase.com loads fine. Only your API calls to *.supabase.co are failing. This is the critical clue. +

+
+
+
+ + + +
+

Root cause: ISP-level DNS blocking, not a Supabase outage

+ +

+ This is not a Supabase infrastructure problem. Supabase servers are online, healthy, and accessible from every country outside India. The real cause is that Indian ISPs are DNS-poisoning all *.supabase.co domains under a government blocking order issued through Section 69A of the Information Technology Act, 2000. +

+ +

+ When your application (or your user's browser) tries to resolve a domain like yourproject.supabase.co, the ISP's DNS resolver intercepts the query and returns a sinkhole IP address instead of the real Supabase server. Your app connects to this sinkhole, which silently drops all packets, and your request hangs until it times out. +

+ +

+ This is why the Supabase dashboard works but the API does not. The dashboard lives on supabase.com (not blocked), while all project APIs live on supabase.co (blocked). +

+ +
+

ISPs confirmed to be blocking Supabase:

+
    +
  • +
    + Jio (Reliance Jio) - approximately 500 million subscribers +
  • +
  • +
    + Airtel (Bharti Airtel) - broadband and mobile +
  • +
  • +
    + ACT Fibernet - metro broadband provider +
  • +
  • +
    + BSNL - also blocking Firebase domains +
  • +
+
+
+ + + +
+

Common misdiagnoses vs the real problem

+ +

+ Before you spend hours debugging your code, rule out these common wrong assumptions: +

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
What you might thinkWhat is actually happening
"My Supabase API key is wrong"A bad API key returns a 401 status, not a timeout. You are not even reaching Supabase.
"It is a CORS error"CORS errors require the browser to receive a response first. Timeouts mean no response was received at all.
"Supabase is down"Check status.supabase.com. Supabase is online globally. The issue is India-specific ISP blocking.
"My code has a bug"If your code worked yesterday and nothing changed, the ISP likely just rolled out the block in your region.
"My firewall is blocking it"Try from a VPN or ask someone outside India to test. If it works for them, the block is at the ISP level.
+
+
+ + + +
+

How to diagnose: confirm it is DNS poisoning

+ +

+ Run these commands from your terminal to confirm that your ISP is poisoning DNS responses for Supabase domains. +

+ +

Step 1: Compare DNS results

+

+ Use nslookup to query your ISP's DNS and then Cloudflare's DNS. If they return different IPs, your ISP is intercepting the query. +

+ +
+
+
+
+
+ terminal +
+
+

# Query your ISP's default DNS (likely poisoned):

+

$ nslookup yourproject.supabase.co

+

Server: 198.18.0.1

+

Address: 198.18.0.1#53

+

Name: yourproject.supabase.co

+

Address: 49.44.79.236 # Sinkhole IP - NOT Supabase

+
+

# Query Cloudflare DNS (returns the real IP):

+

$ nslookup yourproject.supabase.co 1.1.1.1

+

Server: 1.1.1.1

+

Address: 1.1.1.1#53

+

Name: yourproject.supabase.co

+

Address: 104.18.x.x # Real Supabase IP

+
+
+ +

Step 2: Use dig for more detail

+

+ The dig command gives you more verbose output, including the authoritative nameserver and TTL values. +

+ +
+
+
+
+
+ terminal +
+
+

# Compare ISP DNS vs Google DNS:

+

$ dig yourproject.supabase.co

+

;; ANSWER SECTION:

+

yourproject.supabase.co. 300 IN A 49.44.79.236

+
+

$ dig @8.8.8.8 yourproject.supabase.co

+

;; ANSWER SECTION:

+

yourproject.supabase.co. 300 IN A 104.18.x.x

+
+
+ +

Step 3: Test with curl

+

+ Attempt a direct HTTP request to your Supabase project. If it times out, then force the real IP using --resolve to bypass DNS. +

+ +
+
+
+
+
+ terminal +
+
+

# This will timeout on blocked ISPs:

+

$ curl -v --max-time 10 https://yourproject.supabase.co/rest/v1/

+

* Connection timed out after 10001 milliseconds

+

curl: (28) Connection timed out

+
+

# Bypass ISP DNS by resolving to the real IP:

+

$ curl -v --max-time 10 \

+

--resolve yourproject.supabase.co:443:104.18.x.x \

+

https://yourproject.supabase.co/rest/v1/

+

HTTP/2 200 # Works when bypassing ISP DNS

+
+
+ +

+ If the first curl times out but the second one succeeds, the block is confirmed. Your ISP is returning a fake DNS response for *.supabase.co, and no amount of code changes will fix it. +

+
+ + + +
+

Why the Supabase dashboard works but the API does not

+ +

+ This is the single most confusing part for developers hitting this issue. You can log into supabase.com, view your project, run queries in the SQL editor, and everything seems fine. But your application cannot reach the API at all. +

+ +

+ The reason is straightforward: Supabase uses two separate domains for different purposes. +

+ +
+ + + + + + + + + + + + + + + + + + + + +
DomainPurposeStatus in India
supabase.comDashboard, docs, marketing siteNot blocked
*.supabase.coProject APIs, Auth, Storage, RealtimeBlocked by ISPs
+
+ +

+ The blocking order targets *.supabase.co specifically. The .com domain is unaffected. So you can manage your project but your users cannot use it. +

+
+ + + +
+

Fixes that do not work for production apps

+ +

+ Every forum thread and Stack Overflow answer suggests these workarounds. They might help you during development, but none of them solve the problem for your end users. +

+ +
+
+
+ + Changing DNS to 1.1.1.1 or 8.8.8.8 +
+

This fixes DNS resolution on your machine only. Your end users are still using their ISP's default DNS. You cannot ask every user of your app to change their system DNS settings. Additionally, some ISPs use deep packet inspection (DPI) that blocks Supabase traffic regardless of DNS configuration.

+
+ +
+
+ + Using a VPN +
+

VPNs add 50 to 200ms of latency per request, cost money, and require every single user to install and maintain one. This is not a viable solution for a production application serving hundreds or thousands of Indian users.

+
+ +
+
+ + Flushing DNS cache +
+

Running ipconfig /flushdns or equivalent clears your local cache, but your ISP will just return the same poisoned response on the next query. The problem is upstream, not in your local cache.

+
+ +
+
+ + Switching to another BaaS provider +
+

Firebase is already blocked on BSNL. Other backend services could be targeted next. Migrating your entire backend is a massive effort that does not address the root cause: ISP-level blocking can affect any foreign service at any time.

+
+ +
+
+ + Waiting for the block to be lifted +
+

Section 69A blocking orders are issued by the government and enforced by ISPs. These blocks have historically persisted for months or years. Waiting is not a strategy for a production application.

+
+
+
+ + + +
+

The real fix: reverse proxy through Cloudflare

+ +

+ The only production-viable solution is to route your Supabase API traffic through a domain that is not blocked. A reverse proxy sitting on Cloudflare's edge network accepts requests from your users on an unblocked domain and forwards them to Supabase server-side, completely bypassing ISP DNS restrictions. +

+ +

+ JioBase is a managed reverse proxy built specifically for Indian developers facing this problem. It runs on Cloudflare Workers across 300+ edge locations, adding only 1 to 5ms of latency. Here is how to set it up: +

+ + +
+
+
1
+

Create a JioBase account

+
+

+ Sign up at jiobase.com/register. The free tier includes 50,000 proxied requests per month. +

+
+ + +
+
+
2
+

Create a proxy app

+
+

+ Paste your Supabase project URL and choose a slug. You get a proxy URL like myapp.jiobase.com. +

+
+ + +
+
+
3
+

Swap your SUPABASE_URL

+
+

+ Replace the Supabase project URL in your environment variables with the JioBase proxy URL. No code changes needed beyond the URL swap. +

+
+
+ + + +
+

Step-by-step migration: swap one environment variable

+ +

+ The migration requires changing exactly one value in your environment configuration. Here are examples for the most common frameworks. +

+ + +

Next.js

+ +

Before (broken on Indian ISPs):

+
+
+
+
+
+ .env.local +
+
+

NEXT_PUBLIC_SUPABASE_URL=https://abcdefgh.supabase.co

+

NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGciOi...

+
+
+ +

After (works everywhere):

+
+
+
+
+
+ .env.local +
+
+

NEXT_PUBLIC_SUPABASE_URL=https://myapp.jiobase.com

+

NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGciOi... # same key

+
+
+ + +

React (Vite)

+ +

Before:

+
+
+
+
+
+ .env +
+
+

VITE_SUPABASE_URL=https://abcdefgh.supabase.co

+

VITE_SUPABASE_ANON_KEY=eyJhbGciOi...

+
+
+ +

After:

+
+
+
+
+
+ .env +
+
+

VITE_SUPABASE_URL=https://myapp.jiobase.com

+

VITE_SUPABASE_ANON_KEY=eyJhbGciOi... # same key

+
+
+ + +

Flutter

+ +

Before:

+
+
+
+
+
+ lib/main.dart +
+
+

await Supabase.initialize(

+

url: 'https://abcdefgh.supabase.co',

+

anonKey: 'eyJhbGciOi...',

+

);

+
+
+ +

After:

+
+
+
+
+
+ lib/main.dart +
+
+

await Supabase.initialize(

+

url: 'https://myapp.jiobase.com', // proxy URL

+

anonKey: 'eyJhbGciOi...', // same key

+

);

+
+
+ +
+
+ +

+ No other code changes required. The Supabase client library sends standard HTTP and WebSocket requests to whatever URL you configure. Auth, database queries, Storage, Realtime subscriptions, and Edge Functions all work identically through the proxy. Your anon key and service role key remain the same. +

+
+
+
+ + + +
+

How the reverse proxy resolves connectivity

+ +

+ Here is the request flow after you switch to the proxy URL: +

+ +
+
+
+
+
+ request-flow.txt +
+
PROXIED FLOW (works on all Indian ISPs):
+
+  User's Browser         ISP DNS         Cloudflare Edge     Supabase
+    |                      |                  |                 |
+    |--- DNS query -------->|                  |                 |
+    |    myapp.jiobase.com |                  |                 |
+    |                      |                  |                 |
+    |{'<'}-- Real CF IP -------|                  |                 |
+    |    (not blocked)     |                  |                 |
+    |                      |                  |                 |
+    |--- HTTPS request ----------------------->|                 |
+    |                                         |                 |
+    |                              Worker rewrites URL          |
+    |                              myapp.jiobase.com ->         |
+    |                              abcdefgh.supabase.co         |
+    |                                         |                 |
+    |                                         |--- forward ---->|
+    |                                         |                 |
+    |                                         |{'<'}-- response ---|
+    |                                         |                 |
+    |{'<'}-- proxied response ------------------|                 |
+    |                                                           |
+
+ +

+ The key insight: Cloudflare's servers resolve *.supabase.co from their own infrastructure, which is not subject to Indian ISP DNS blocks. The request reaches Supabase normally on the server side. +

+
+ + + +
+

Self-hosted alternative: deploy your own Cloudflare Worker

+ +

+ If you prefer to manage the proxy yourself, you can deploy a basic Cloudflare Worker that forwards requests to Supabase. We provide a free Worker Generator Tool that creates a ready-to-deploy script. +

+ +

+ The self-hosted approach works well for simple use cases but does not include WebSocket proxying (needed for Supabase Realtime), analytics, rate limiting, or automatic health checks that the managed JioBase service provides. +

+ +

+ For a detailed walkthrough of setting up a self-hosted proxy, see our Cloudflare Workers proxy tutorial. +

+
+ + + +
+

Frequently Asked Questions

+ +
+
+ + Is this a Supabase outage or an India-specific problem? + + + + +
+ It is India-specific. Supabase infrastructure is fully operational globally. The connectivity problem is caused by Indian ISPs (Jio, Airtel, ACT Fibernet) DNS-blocking the *.supabase.co domain under a government directive. You can verify this by checking status.supabase.com or asking someone outside India to test your project URL. +
+
+ +
+ + Why does my Supabase dashboard work but my app does not? + + + + +
+ The Supabase dashboard is hosted on supabase.com, which is not blocked. Your project's API endpoints live on yourproject.supabase.co, which is blocked. The two domains are separate, and only the .co domain is targeted by the blocking order. +
+
+ +
+ + Will changing my DNS to 1.1.1.1 fix this for my users? + + + + +
+ No. Changing DNS settings only affects your own machine. Your end users will still be using their ISP's default DNS resolver, which returns the poisoned response. You cannot control the DNS settings of every person who uses your application. A server-side reverse proxy is the only solution that works transparently for all users. +
+
+ +
+ + Does the proxy work with Supabase Realtime (WebSockets)? + + + + +
+ Yes. JioBase supports full WebSocket proxying. When your Supabase client initiates a Realtime connection, the proxy performs a WebSocket upgrade and maintains a persistent bidirectional connection between the client and Supabase, forwarding frames in both directions with minimal latency. +
+
+ +
+ + Is my data safe going through a proxy? + + + + +
+ JioBase does not read, store, or log the content of your requests. The proxy forwards requests as-is to Supabase without inspecting payloads. All connections use end-to-end HTTPS. Your Supabase anon key and Row Level Security (RLS) policies remain fully in effect. For additional assurance, you can self-host your own proxy. +
+
+ +
+ + How much latency does the proxy add? + + + + +
+ Typically 1 to 5 milliseconds per request. JioBase runs on Cloudflare's global edge network with 300+ data centers. The request hits the nearest Cloudflare node, gets forwarded to Supabase, and the response comes back the same way. This is negligible compared to the 50 to 200ms overhead of a VPN, and infinitely better than a complete connection timeout. +
+
+
+
+ + + +
+
+

Fix your Supabase connectivity in 5 minutes

+

Stop debugging network errors that are not your fault. Route through an unblocked domain and get your app working for every user in India.

+ +
+
+ + + + + +
diff --git a/apps/web/src/routes/blog/supabase-production-app-broken-india/+page.svelte b/apps/web/src/routes/blog/supabase-production-app-broken-india/+page.svelte new file mode 100644 index 0000000..058f1d3 --- /dev/null +++ b/apps/web/src/routes/blog/supabase-production-app-broken-india/+page.svelte @@ -0,0 +1,528 @@ + + + + Your Production App Just Broke: Emergency Guide for Supabase Block in India | JioBase + + + + + + + + + + + + + + + {@html ``} + + +
+ + +
+
+ Emergency + + · + 6 min read +
+ +

+ Your Production App Just Broke: Emergency Guide for Supabase Block in India +

+ +

+ Your Supabase-powered app just stopped working for Indian users. Here is the emergency triage guide. Diagnose the problem in 60 seconds, avoid the common mistakes, and get your app running again in 15 minutes. +

+
+ +
+ + + +
+

Is it the block? Quick diagnosis

+ +

+ Before you start debugging your code or checking Supabase status pages, run these three quick checks. If all three match, your ISP is blocking Supabase. +

+ + +
+
+
1
+

Check if supabase.com loads but your API calls time out

+
+
+

+ Open supabase.com in your browser. If the Supabase website loads normally but your app's API calls are failing with timeout errors, this is a strong indicator of the ISP block. The block targets *.supabase.co (the API domain), not supabase.com (the marketing site). +

+
+
+ supabase.com loads? + + + API calls timing out? + = + Likely ISP block +
+
+
+
+ + +
+
+
2
+

Run nslookup and check for sinkhole IPs

+
+
+

+ Open your terminal and run the following command, replacing the project ID with your actual Supabase project: +

+
+
+
+
+
+ terminal +
+
+
$ nslookup yourproject.supabase.co
+
Name: yourproject.supabase.co
+
Address: 49.44.79.236 ← sinkhole IP
+
+
+

+ If the resolved IP starts with 49.44.x.x, that is a sinkhole IP. Your ISP is returning a fake address instead of Supabase's real server. This confirms DNS poisoning. +

+
+
+ + +
+
+
3
+

Test from a VPN

+
+
+

+ Enable a VPN that routes through a non-Indian server and try your app again. If it works through the VPN but fails without it, the ISP block is confirmed. This is the definitive test because the VPN bypasses the ISP's DNS entirely. +

+
+
+ +
+
+ +

+ All three checks point to the block? Skip the debugging. Your code is fine. Supabase is fine. The problem is between your users and Supabase's servers. Jump to the emergency fix below. +

+
+
+
+ + + +
+

What NOT to do

+ +

+ When your production app goes down, the instinct is to try anything to get it back up. Here are the three most common panic reactions that will waste your time or make things worse. +

+ +
+
+
+ + Do not panic-migrate to Firebase +
+

+ Firebase is also blocked on BSNL since August 2025. Migrating your entire backend to Firebase could take days or weeks, and you might end up with the same problem on a different ISP. The issue is ISP-level DNS blocking, not a Supabase-specific problem. Switching backends does not solve it. For a full comparison of alternatives, read our Supabase alternatives guide. +

+
+ +
+
+ + Do not tell users to use a VPN +
+

+ A VPN works for you as a developer. It does not work as a solution for your users. You cannot expect 500 million Jio subscribers to install a VPN app just to use your product. Most will leave and never come back. The fix needs to be invisible to your end users. +

+
+ +
+
+ + Do not switch DNS and think it is fixed +
+

+ Changing your local DNS to 1.1.1.1 or 8.8.8.8 might unblock Supabase on your development machine. But your production users are still on their ISP's default DNS. The DNS change only helps you, not your customers. Some ISPs also use Deep Packet Inspection that blocks connections regardless of DNS. +

+
+
+
+ + + +
+

Emergency fix: swap your Supabase URL (15 minutes)

+ +

+ The fix is to route your Supabase traffic through a domain that is not blocked. Here is the fastest path to get your production app working again. +

+ + +
+
+
1
+

Sign up at JioBase

+
+

+ Go to jiobase.com/register. Create a free account. Takes 30 seconds. +

+
+ + +
+
+
2
+

Create a proxy app

+
+

+ Click "New App" and enter your Supabase project URL (for example, https://abcdefgh.supabase.co) and pick a slug. You will get a proxy URL like myapp.jiobase.com. +

+
+ + +
+
+
3
+

Swap the URL in your config

+
+

+ Find your Supabase client initialization and change the URL. That is the only change. Your API keys, RLS policies, and all other configuration stays exactly the same. +

+
+ + +
+
+
4
+

Code examples by framework

+
+
+ + +
+

Environment variable (all frameworks):

+
+
+
+
+
+ .env +
+
+
# Before (blocked)
+
NEXT_PUBLIC_SUPABASE_URL=https://abcdefgh.supabase.co
+
# After (works everywhere)
+
NEXT_PUBLIC_SUPABASE_URL=https://myapp.jiobase.com
+
# Key stays the same
+
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
+
+
+
+ + +
+

Next.js / React:

+
+
+
+
+
+ lib/supabase.ts +
+
+
import {'{'} createClient {'}'} from '@supabase/supabase-js'
+
export const supabase = createClient(
+
process.env.NEXT_PUBLIC_SUPABASE_URL!,
+
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!
+
)
+
+
+
+ + +
+

Flutter / Dart:

+
+
+
+
+
+ main.dart +
+
+
await Supabase.initialize(
+
url: 'https://myapp.jiobase.com',
+
anonKey: 'your-anon-key',
+
);
+
+
+
+ + +
+

SvelteKit:

+
+
+
+
+
+ src/lib/supabase.ts +
+
+
import {'{'} createClient {'}'} from '@supabase/supabase-js'
+
import {'{'} PUBLIC_SUPABASE_URL, PUBLIC_SUPABASE_ANON_KEY {'}'} from '$env/static/public'
+
export const supabase = createClient(
+
PUBLIC_SUPABASE_URL,
+
PUBLIC_SUPABASE_ANON_KEY
+
)
+
+
+
+
+
+ +
+
+ +

+ No SDK changes needed. The Supabase client library sends standard HTTP requests and WebSocket connections to whatever URL you provide. JioBase transparently forwards everything to your actual Supabase project. Your anon key, service role key, RLS policies, and all other configuration stays the same. +

+
+
+
+ + + +
+

Production migration checklist

+ +

+ Swapping the URL in your main codebase is the first step, but production apps have multiple touchpoints. Go through this checklist to make sure you have covered everything. +

+ +
+
+
+ 1 +
+
+

Environment variables

+

Update SUPABASE_URL (or NEXT_PUBLIC_SUPABASE_URL, VITE_SUPABASE_URL, etc.) in all environments: development, staging, and production. Check .env, .env.local, .env.production.

+
+
+ +
+
+ 2 +
+
+

CI/CD pipeline secrets

+

If your CI/CD pipeline (GitHub Actions, Vercel, Netlify, Railway, etc.) has the Supabase URL as a secret or environment variable, update it there too. Deployments that pull from CI secrets will use the old URL otherwise.

+
+
+ +
+
+ 3 +
+
+

Mobile app releases

+

If you have a mobile app (React Native, Flutter, native iOS/Android) that has the Supabase URL compiled into the binary, you will need to publish a new app store release. Until users update, they will still hit the blocked URL. Use a remote config or environment variable pattern to avoid this problem in the future.

+
+
+ +
+
+ 4 +
+
+

Realtime subscriptions

+

If your app uses Supabase Realtime (database subscriptions, presence, broadcast), verify that WebSocket connections are working through the proxy. JioBase supports full WebSocket proxying. Test your subscription channels after the swap.

+
+
+ +
+
+ 5 +
+
+

Storage URLs

+

If you are generating signed URLs for Supabase Storage files, those URLs include the supabase.co domain. You may need to update how you generate or serve these URLs. If your app constructs Storage URLs using the Supabase client, they will automatically use the proxy URL.

+
+
+ +
+
+ 6 +
+
+

Server-side code and Edge Functions

+

If you call Supabase from server-side code (API routes, serverless functions, cron jobs), check whether those servers are hosted in India. If they run on Indian infrastructure, they are also affected by the block and need the proxy URL.

+
+
+ +
+
+ 7 +
+
+

Hardcoded URLs in codebase

+

Search your entire codebase for supabase.co. Check for hardcoded URLs in configuration files, seed scripts, migration scripts, webhook endpoints, or documentation.

+
+
+
+ +
+
+
+
+
+ terminal +
+
+
# Find all hardcoded Supabase URLs in your project
+
$ grep -r "supabase\.co" . --include="*.ts" --include="*.tsx" \
+
--include="*.js" --include="*.jsx" --include="*.env*" \
+
--include="*.dart" --include="*.swift" --include="*.kt"
+
+
+
+ + + +
+

Why DNS change alone does not fix production

+ +

+ It is tempting to think that switching your DNS to 1.1.1.1 or 8.8.8.8 solves the problem. It might unblock Supabase on your development machine. But here is why it does nothing for your production users: +

+ +
+
+ +

+ Your users do not control their DNS. When a user opens your app on their Jio mobile or Airtel broadband, their device uses the ISP's DNS by default. They are not going to open network settings and change DNS servers. Most do not even know what DNS is. +

+
+ +
+ +

+ Mobile DNS changes require root or apps. On Android, changing DNS system-wide requires either root access or a DNS changer app that creates a local VPN. On iOS, DNS can be changed per-network but resets frequently. Neither option is realistic for end users. +

+
+ +
+ +

+ Some ISPs block third-party DNS too. Certain ISPs use Deep Packet Inspection (DPI) to inspect TLS handshakes. Even if DNS resolves correctly, the ISP sees the Server Name Indication (SNI) field containing supabase.co and blocks the connection. +

+
+ +
+ +

+ DNS requests can be hijacked. Some ISPs intercept DNS queries to 1.1.1.1 and 8.8.8.8 at the network level, redirecting them to the ISP's own resolver. Even DNS over HTTPS (DoH) may not work if the ISP blocks the DoH endpoints. +

+
+
+ +

+ A reverse proxy solves the problem at the infrastructure level. Your users connect to myapp.jiobase.com, which is not blocked. The proxy forwards requests to Supabase server-side, outside the reach of ISP blocks. No user-side configuration needed. For a deeper technical explanation, read our complete fix guide. +

+
+ + + +
+

Frequently Asked Questions

+ +
+
+ + My app works on my laptop but users in India are reporting it is broken. What is happening? + + +
+ You are likely on a different ISP, using a VPN, or have custom DNS configured on your machine. Your Indian users on Jio, Airtel, or ACT Fibernet are hitting the DNS block. Their ISP is returning a sinkhole IP for *.supabase.co, so the connection times out. The fix is to route traffic through a reverse proxy like JioBase so the domain your users connect to is not blocked. +
+
+ +
+ + I have a mobile app already in production. How do I fix it for existing users? + + +
+ If the Supabase URL is hardcoded in your app binary, you will need to push a new release to the App Store / Play Store. Until users update, they will be stuck on the blocked URL. For the future, store the Supabase URL in a remote config or environment variable so you can change it without an app update. Some teams use feature flags or remote configuration services to control the API base URL. +
+
+ +
+ + Will the proxy add latency to my API calls? + + +
+ Minimal. JioBase runs on Cloudflare's edge network with 300+ locations worldwide. Requests are handled by the nearest edge node, adding typically 1-5ms of overhead. This is negligible compared to database query times and far better than the infinite timeout your users currently experience due to the block. Check our technical deep-dive for performance benchmarks. +
+
+
+
+ + + +
+
+

+ Every minute your app is down, you are losing users +

+

+ The block is not going away on its own. Set up JioBase in 15 minutes and get your Supabase-powered app working for every user in India. No VPN required. No DNS changes for your users. Just swap one URL. +

+ +

+ Free tier includes 1 proxy app and 50,000 requests/month. No credit card required. +

+
+
+ + + + + +
diff --git a/apps/web/src/routes/blog/supabase-vs-firebase-both-blocked-india/+page.svelte b/apps/web/src/routes/blog/supabase-vs-firebase-both-blocked-india/+page.svelte new file mode 100644 index 0000000..e5d185e --- /dev/null +++ b/apps/web/src/routes/blog/supabase-vs-firebase-both-blocked-india/+page.svelte @@ -0,0 +1,639 @@ + + + + Supabase vs Firebase in India: Both Blocked, One Solution | JioBase + + + + + + + + + {@html ``} + + +
+ + +
+
+ Comparison + + · + 7 min read +
+ +

+ Supabase vs Firebase in India: Both Blocked, One Solution +

+ +

+ Both major Backend-as-a-Service platforms now face blocks in India. Here is why switching between them does not help, and what actually works. +

+
+ +
+ + + +
+

The situation

+ +

+ Indian developers are caught in a difficult position. Supabase, the open-source Firebase alternative that has become one of the most popular backend platforms worldwide, has been DNS-blocked on Jio, Airtel, and ACT Fibernet since February 24, 2026. Every API call, authentication request, storage upload, and Realtime subscription fails with a timeout error for users on these networks. +

+ +

+ Meanwhile, Firebase, Google's proprietary BaaS platform and the other dominant choice for Indian developers, faces its own DNS block on BSNL. Two of India's most popular backend platforms are now partially or fully inaccessible depending on which ISP your users happen to be on. +

+ +

+ The natural instinct is to migrate from the blocked platform to the one that still works on your ISP. But that strategy is fundamentally flawed. Here is why, and what you should do instead. +

+
+ + + +
+

Supabase block details

+ +

+ The Supabase block is the more widespread of the two, affecting India's largest ISPs by subscriber count: +

+ +
+
+
+ +
+

Affected ISPs

+

Jio (~500M subscribers), Airtel (~380M subscribers), ACT Fibernet (regional broadband)

+
+
+
+ +
+

Blocking method

+

DNS poisoning on *.supabase.co. ISP resolvers return a sinkhole IP instead of the real Supabase server address.

+
+
+
+ +
+

Impact

+

All API calls fail: REST queries, Auth, Storage, Edge Functions, Realtime WebSockets. Apps show ERR_CONNECTION_TIMED_OUT.

+
+
+
+ +
+

What still works

+

supabase.com (the dashboard and marketing site) loads fine. Only the .supabase.co API domain is blocked.

+
+
+
+
+ +

+ For a deeper technical breakdown of the Supabase block, including DNS lookup evidence and ISP-specific behavior, see our full Supabase block analysis. +

+
+ + + +
+

Firebase block details

+ +

+ The Firebase block is more limited in scope but still affects a significant number of Indian users: +

+ +
+
+
+ +
+

Affected ISP

+

BSNL (government-owned telecom provider with significant rural and semi-urban coverage)

+
+
+
+ +
+

Blocking method

+

DNS blocking on Firebase service domains

+
+
+
+ +
+

Impact

+

Firebase Hosting, Firestore, Authentication, and Cloud Functions are affected. Apps relying on any of these services break for BSNL users.

+
+
+
+ +
+

Scope

+

Currently limited to BSNL. Other ISPs can still reach Firebase services, but this could change at any time.

+
+
+
+
+ +

+ While the Firebase block currently affects fewer users than the Supabase block, it demonstrates a troubling pattern: ISP-level blocking of developer infrastructure is not limited to a single platform. For more on how both platforms are affected, see our Firebase and Supabase blocked in India deep dive. +

+
+ + + +
+

Why migrating from one to the other does not help

+ +

+ When developers discover that Supabase is blocked on Jio, the first thought is often: "Let me just move to Firebase." Or vice versa for BSNL users. This logic seems sound on the surface, but it breaks down when you look at the full picture. +

+ +

+ If you migrate from Supabase to Firebase, your Jio and Airtel users can connect again. But now your BSNL users cannot. You have traded one set of blocked users for another. In a country with over a billion internet users spread across dozens of ISPs, you cannot control which ISP your users are on. +

+ +
+

The migration trap

+
    +
  • + + Today's fix becomes tomorrow's problem: Moving to Firebase fixes your Jio users, but breaks the app for BSNL users. The block landscape can shift at any time. +
  • +
  • + + Migration is expensive: Switching from Supabase (PostgreSQL) to Firebase (Firestore/NoSQL) requires rewriting queries, data models, auth flows, and storage logic. This is not a weekend project. +
  • +
  • + + Any platform could be next: The underlying mechanism is government-ordered ISP blocking under Section 69A of the IT Act. If it happened to Supabase and Firebase, it could happen to any service. +
  • +
  • + + You lose features: Supabase and Firebase have fundamentally different architectures. Moving means giving up the features that made you choose your current platform in the first place. +
  • +
+
+ +

+ The problem is not which BaaS you chose. The problem is that your app connects directly to a domain controlled by the BaaS provider, and that domain can be blocked at the ISP level. The solution has to address that architectural weakness, not swap one vulnerable domain for another. +

+
+ + + +
+

Feature comparison: Supabase vs Firebase

+ +

+ If you are evaluating both platforms on their technical merits (which is how the decision should be made), here is how they stack up: +

+ +
+
+ +
Feature
+
Supabase
+
Firebase
+ + +
+ + +
Database
+
PostgreSQL (relational, SQL)
+
Firestore / Realtime DB (NoSQL)
+ +
+ + +
Authentication
+
Built-in (email, OAuth, magic link)
+
Built-in (email, OAuth, phone)
+ +
+ + +
File Storage
+
Built-in (S3-compatible)
+
Built-in (Cloud Storage)
+ +
+ + +
Realtime
+
WebSocket (Presence, Broadcast)
+
Snapshot Listeners
+ +
+ + +
Pricing
+
Free tier + pay-as-you-go
+
Free tier + pay-as-you-go
+ +
+ + +
Open Source
+
Yes (Apache 2.0)
+
No (proprietary)
+ +
+ + +
Self-hostable
+
Yes (Docker)
+
No (Firebase Emulator only)
+ +
+ + +
India Block Status
+
Jio, Airtel, ACT Fibernet
+
BSNL
+
+
+ +

+ Both platforms are capable choices for building modern applications. The decision should be driven by your data model (SQL vs NoSQL), your need for open-source flexibility, and your team's expertise. It should never be driven by which ISP happens to block which domain this week. +

+
+ + + +
+

The common root cause: Section 69A and DNS poisoning

+ +

+ Both blocks share the same root cause. Section 69A of India's Information Technology Act gives the government the power to direct ISPs to block access to specific websites and online services. These blocking orders are issued directly to ISPs, which then implement them at the DNS level. +

+ +

+ The mechanism works the same way for both platforms. When a user's device requests the IP address of a blocked domain, the ISP's DNS resolver returns a fake (sinkhole) IP address instead of the real one. The browser or app tries to connect to this fake IP, gets no response, and eventually times out. For a detailed look at the legal framework, see our post on why Supabase was banned under Section 69A. +

+ +
+
+
+
+
+ terminal - blocked DNS on Jio +
+
+
$ nslookup myproject.supabase.co
+
Name: myproject.supabase.co
+
Address: 49.44.79.236 ← sinkhole IP
+
$ nslookup myproject.supabase.co 1.1.1.1
+
Name: myproject.supabase.co
+
Address: 13.228.X.X ← real Supabase IP
+
+
+ +

+ Key characteristics of this blocking mechanism: +

+ +
    +
  • + + No public transparency: Section 69A orders are issued confidentially. There is no public registry of blocked sites and no official announcement when a service is blocked. +
  • +
  • + + ISP-specific implementation: Different ISPs receive and implement blocking orders independently, which is why Supabase is blocked on Jio but not BSNL, and Firebase is blocked on BSNL but not Jio. +
  • +
  • + + Unpredictable scope: Blocks can expand to additional ISPs or additional services without warning. A platform that works today might be blocked tomorrow. +
  • +
+ +

+ This is exactly why migrating between platforms is a losing strategy. The blocking mechanism does not care whether you use Supabase or Firebase. It targets domains, and any domain can be targeted. You can use our testing guide to check if your specific backend is affected. +

+
+ + + +
+

Why a proxy layer works for both platforms

+ +

+ A reverse proxy solves the problem at the architectural level. Instead of your app connecting directly to *.supabase.co or *.firebaseio.com, it connects to your own domain on Cloudflare's edge network. The proxy then forwards the request to the backend service on the server side, where ISP blocks do not apply. +

+ + +
+
+
+

Your App

+

Browser / Client

+
+ +
+ + HTTPS +
+ +
+

Proxy Layer

+

Cloudflare Edge

+
+ +
+ + HTTPS +
+ +
+

Backend

+

Supabase / Firebase

+
+
+
+ +

+ This works because the ISP block only applies to client-side DNS resolution. When a Cloudflare Worker makes a server-side request to Supabase or Firebase, it bypasses the ISP entirely. The Worker runs on Cloudflare's global network, not on an Indian ISP. +

+ +

+ JioBase provides this proxy layer as a managed service for Supabase. You get a proxy endpoint like myapp.jiobase.com that transparently forwards all Supabase API calls, including WebSocket connections for Realtime. The same architectural pattern can be applied to any blocked backend. +

+ +
+

Why the proxy approach is resilient

+
    +
  • + + Your users never connect to the blocked domain directly +
  • +
  • + + Works on every ISP regardless of their individual blocking policies +
  • +
  • + + Users do not need VPNs, DNS changes, or any special configuration +
  • +
  • + + Minimal latency overhead (1-5ms) through Cloudflare's 300+ edge locations +
  • +
  • + + If your proxy domain is ever blocked, you can swap it without changing your backend +
  • +
+
+
+ + + +
+

Setting up a Supabase proxy with JioBase

+ +

+ If you are a Supabase developer, JioBase gives you a working proxy in under five minutes. The only code change is swapping your Supabase URL: +

+ + +

Before (blocked on Indian ISPs):

+
+
+
+
+
+ lib/supabase.ts +
+
+
import {'{'} createClient {'}'} from '@supabase/supabase-js'
+
const supabase = createClient(
+
'https://abcdefgh.supabase.co',
+
'your-anon-key'
+
)
+
+
+ + +

After (works everywhere via JioBase):

+
+
+
+
+
+ lib/supabase.ts +
+
+
import {'{'} createClient {'}'} from '@supabase/supabase-js'
+
const supabase = createClient(
+
'https://myapp.jiobase.com', // ← proxy URL
+
'your-anon-key' // ← same key
+
)
+
+
+ +

+ Using environment variables makes this even more flexible. You can swap between direct access and the proxy without changing any code: +

+ +
+
+
+
+
+ .env +
+
+
# Production (routed through JioBase proxy)
+
SUPABASE_URL=https://myapp.jiobase.com
+
# Key stays the same regardless of proxy
+
SUPABASE_ANON_KEY=your-anon-key
+
+
+ +

+ Want to build your own proxy instead? Use our free Cloudflare Worker Generator to create a custom proxy Worker in seconds. For a full walkthrough, check our Cloudflare Workers proxy guide. +

+
+ + + +
+

Decision framework for Indian developers

+ +

+ Here is a practical framework for choosing and deploying a BaaS in India, given the current blocking environment: +

+ + +
+
+
1
+

Do not choose a BaaS based on which ISP blocks it

+
+

+ ISP blocks are unpredictable. A platform that works on Jio today might be blocked next week. Choosing your entire backend architecture based on current blocking status is building on unstable ground. +

+
+ + +
+
+
2
+

Choose based on technical merits

+
+

+ If you need a relational database with SQL, Row Level Security, and the flexibility of open source, Supabase is the stronger choice. If you prefer a NoSQL document model with tight Google Cloud integration, Firebase works well. Make the decision on technical fit, not ISP politics. +

+
+ + +
+
+
3
+

Always add a proxy layer for Indian users

+
+

+ Regardless of which backend you choose, add a reverse proxy between your client and the backend API. This decouples your app from the backend's domain and protects you against current and future ISP blocks. For Supabase, JioBase provides this as a managed service. +

+
+ + +
+
+
4
+

Use environment variables so you can swap URLs instantly

+
+

+ Never hardcode your backend URL. Always use an environment variable like SUPABASE_URL or FIREBASE_API_URL. This lets you switch to a proxy endpoint, swap domains, or even change backends entirely without redeploying your application code. +

+
+
+ + + +
+

Build your own proxy if you prefer

+ +

+ If you want full control over your proxy infrastructure, you can deploy your own Cloudflare Worker. The basic pattern is the same for any blocked backend: intercept the request, rewrite the host, forward to the origin, and return the response. +

+ +
+
+
+
+
+ worker.js - basic reverse proxy +
+
+
export default {'{'}
+
async fetch(request) {'{'}
+
const url = new URL(request.url)
+
// Rewrite to your Supabase project
+
url.hostname = 'abcdefgh.supabase.co'
+
const response = await fetch(url.toString(), {'{'}
+
method: request.method,
+
headers: request.headers,
+
body: request.body,
+
{'}'})
+
return response
+
{'}'}
+
{'}'}
+
+
+ +
+
+ +

+ Note: This basic example does not handle CORS headers, WebSocket upgrades, or error handling. For a production-ready version, use our Worker Generator or sign up for JioBase which handles all of this automatically. +

+
+
+
+ + + +
+

Frequently Asked Questions

+ +
+
+ + Should I switch from Supabase to Firebase (or vice versa) because of the blocks? + + +
+ No. Migrating between platforms to avoid ISP blocks is a temporary fix at best. Both Supabase and Firebase face blocks on different ISPs, and any platform could be targeted next. A better strategy is to keep your preferred platform and add a reverse proxy layer that decouples your app from the backend domain. This protects you against current and future blocks without the cost and effort of a full migration. +
+
+ +
+ + Are there any Indian BaaS alternatives that are not blocked? + + +
+ There are Indian alternatives like Appwrite (self-hosted) and various cloud providers with India-based infrastructure. However, the core issue remains: any service can be blocked under Section 69A. Even Indian services are not immune to blocking orders. The safest approach is to always use a proxy layer, regardless of which backend you choose. See our full Supabase alternatives for India analysis. +
+
+ +
+ + Does JioBase work with Firebase too, or only Supabase? + + +
+ JioBase is currently built for Supabase, with support for the full Supabase API including REST, Auth, Storage, Edge Functions, and Realtime WebSockets. The same reverse proxy architecture can be applied to Firebase or any other blocked service using a custom Cloudflare Worker. You can use our Worker Generator to create a proxy for any backend domain. +
+
+
+
+ + + +
+
+

+ Stop chasing unblocked platforms +

+

+ The answer is not switching from Supabase to Firebase or back again. The answer is a proxy layer that makes your app work on every ISP in India. Set up JioBase in under five minutes. +

+ +

+ Free tier includes 1 proxy app and 50,000 requests/month. No credit card required. +

+
+
+ + + + + +
diff --git a/apps/web/src/routes/blog/test-if-backend-blocked-india/+page.svelte b/apps/web/src/routes/blog/test-if-backend-blocked-india/+page.svelte index a6b0f40..ac6316e 100644 --- a/apps/web/src/routes/blog/test-if-backend-blocked-india/+page.svelte +++ b/apps/web/src/routes/blog/test-if-backend-blocked-india/+page.svelte @@ -14,6 +14,7 @@ + {@html ``}
diff --git a/apps/web/src/routes/blog/why-indian-developers-need-supabase-proxy/+page.svelte b/apps/web/src/routes/blog/why-indian-developers-need-supabase-proxy/+page.svelte index 5ee3362..5e3a0b9 100644 --- a/apps/web/src/routes/blog/why-indian-developers-need-supabase-proxy/+page.svelte +++ b/apps/web/src/routes/blog/why-indian-developers-need-supabase-proxy/+page.svelte @@ -19,6 +19,7 @@ + {@html ``}
diff --git a/apps/web/src/routes/blog/why-supabase-banned-india-section-69a/+page.svelte b/apps/web/src/routes/blog/why-supabase-banned-india-section-69a/+page.svelte index 3ed5319..255aae1 100644 --- a/apps/web/src/routes/blog/why-supabase-banned-india-section-69a/+page.svelte +++ b/apps/web/src/routes/blog/why-supabase-banned-india-section-69a/+page.svelte @@ -19,6 +19,7 @@ + {@html ``}
diff --git a/apps/web/src/routes/dashboard/+layout.svelte b/apps/web/src/routes/dashboard/+layout.svelte index 3e590e4..7c3c4e1 100644 --- a/apps/web/src/routes/dashboard/+layout.svelte +++ b/apps/web/src/routes/dashboard/+layout.svelte @@ -1,15 +1,33 @@ {#if auth.loading} @@ -23,6 +41,8 @@ {:else if auth.user} + +
-
+

- JioBase is free & open source. If it helps you, consider supporting the project. + I built JioBase solo and fund it out of pocket. If it's keeping your app alive, a quick coffee helps me keep it free.

Buy me a coffee diff --git a/apps/web/src/routes/dashboard/apps/[id]/+page.svelte b/apps/web/src/routes/dashboard/apps/[id]/+page.svelte index 0325967..2214776 100644 --- a/apps/web/src/routes/dashboard/apps/[id]/+page.svelte +++ b/apps/web/src/routes/dashboard/apps/[id]/+page.svelte @@ -4,11 +4,13 @@ import { goto } from '$app/navigation'; import { api, type AppRecord, ApiError } from '$lib/api.js'; import { JIOBASE_DOMAIN } from '@jiobase/shared'; + import DonationModal from '$lib/components/DonationModal.svelte'; let app = $state(null); let loading = $state(true); let error = $state(''); let copied = $state(false); + let showDonation = $state(false); onMount(async () => { try { @@ -19,6 +21,13 @@ } finally { loading = false; } + + // Show celebration modal if user just created this app + if (localStorage.getItem('jb_just_created')) { + localStorage.removeItem('jb_just_created'); + // Small delay so the page content loads first + setTimeout(() => (showDonation = true), 500); + } }); async function handleToggle() { @@ -58,6 +67,7 @@ {:else if error}
{error}
{:else if app} +
← Back to apps diff --git a/apps/web/src/routes/dashboard/apps/new/+page.svelte b/apps/web/src/routes/dashboard/apps/new/+page.svelte index e426865..3233ac8 100644 --- a/apps/web/src/routes/dashboard/apps/new/+page.svelte +++ b/apps/web/src/routes/dashboard/apps/new/+page.svelte @@ -9,6 +9,14 @@ let error = $state(''); let submitting = $state(false); let slugManuallyEdited = $state(false); + let urlTouched = $state(false); + + const supabaseUrlRegex = /^https:\/\/[a-z0-9]+\.supabase\.co$/; + let urlError = $derived( + urlTouched && supabaseUrl && !supabaseUrlRegex.test(supabaseUrl) + ? 'Must be a valid Supabase URL (https://xxxxx.supabase.co)' + : '' + ); function generateSlug(name: string): string { return name @@ -38,10 +46,17 @@ slug, supabaseUrl, }); + localStorage.setItem('jb_just_created', '1'); goto(`/dashboard/apps/${res.data.id}`); } catch (err) { if (err instanceof ApiError) { - error = err.message; + const fieldErrors = err.body?.details?.fieldErrors; + if (fieldErrors) { + const messages = Object.values(fieldErrors).flat(); + error = messages.length ? messages.join('. ') : err.message; + } else { + error = err.message; + } } else { error = 'Something went wrong. Please try again.'; } @@ -98,13 +113,27 @@ id="supabaseUrl" type="url" bind:value={supabaseUrl} + onblur={() => (urlTouched = true)} required - class="w-full rounded-lg border border-white/10 bg-surface-200 px-3 py-2.5 text-white placeholder-gray-500 focus:border-brand-400 focus:ring-1 focus:ring-brand-400 focus:outline-none" + class="w-full rounded-lg border {urlError ? 'border-red-500/50' : 'border-white/10'} bg-surface-200 px-3 py-2.5 text-white placeholder-gray-500 focus:border-brand-400 focus:ring-1 focus:ring-brand-400 focus:outline-none" placeholder="https://abcdefg.supabase.co" /> -

Find this in your Supabase project settings → API

+ {#if urlError} +

{urlError}

+ {:else} +

Find this in your Supabase project settings → API

+ {/if}
+

+ By creating an app, you confirm that your use complies with our + Terms of Service + and + Acceptable Use Policy. + All proxied traffic is subject to our + Privacy Policy. +

+
diff --git a/apps/web/src/routes/fix/+layout.svelte b/apps/web/src/routes/fix/+layout.svelte index d8cfc60..4dcf18d 100644 --- a/apps/web/src/routes/fix/+layout.svelte +++ b/apps/web/src/routes/fix/+layout.svelte @@ -14,8 +14,12 @@
-
- © {new Date().getFullYear()} JioBase. Built on Cloudflare. +
+
+ Terms + Privacy +
+

© {new Date().getFullYear()} JioBase. Built on Cloudflare.

diff --git a/apps/web/src/routes/fix/[slug]/+page.svelte b/apps/web/src/routes/fix/[slug]/+page.svelte index 5841914..08a4c67 100644 --- a/apps/web/src/routes/fix/[slug]/+page.svelte +++ b/apps/web/src/routes/fix/[slug]/+page.svelte @@ -41,6 +41,32 @@ + {@html ``}
diff --git a/apps/web/src/routes/guides/+layout.svelte b/apps/web/src/routes/guides/+layout.svelte index 21762ae..236ea18 100644 --- a/apps/web/src/routes/guides/+layout.svelte +++ b/apps/web/src/routes/guides/+layout.svelte @@ -14,8 +14,12 @@
-
- © {new Date().getFullYear()} JioBase. Built on Cloudflare. +
+
+ Terms + Privacy +
+

© {new Date().getFullYear()} JioBase. Built on Cloudflare.

diff --git a/apps/web/src/routes/guides/[framework]/+page.svelte b/apps/web/src/routes/guides/[framework]/+page.svelte index 07765da..77e2cab 100644 --- a/apps/web/src/routes/guides/[framework]/+page.svelte +++ b/apps/web/src/routes/guides/[framework]/+page.svelte @@ -27,6 +27,32 @@ + {@html ``}
diff --git a/apps/web/src/routes/india-status/+layout.svelte b/apps/web/src/routes/india-status/+layout.svelte index 79b29a2..80768ce 100644 --- a/apps/web/src/routes/india-status/+layout.svelte +++ b/apps/web/src/routes/india-status/+layout.svelte @@ -14,8 +14,12 @@
-
- © {new Date().getFullYear()} JioBase. Built on Cloudflare. +
+
+ Terms + Privacy +
+

© {new Date().getFullYear()} JioBase. Built on Cloudflare.

diff --git a/apps/web/src/routes/india-status/+page.svelte b/apps/web/src/routes/india-status/+page.svelte index 0070b97..d17fb8c 100644 --- a/apps/web/src/routes/india-status/+page.svelte +++ b/apps/web/src/routes/india-status/+page.svelte @@ -56,6 +56,25 @@ + {@html ``}
diff --git a/apps/web/src/routes/privacy/+page.svelte b/apps/web/src/routes/privacy/+page.svelte new file mode 100644 index 0000000..5589385 --- /dev/null +++ b/apps/web/src/routes/privacy/+page.svelte @@ -0,0 +1,699 @@ + + + + Privacy Policy - JioBase + + + + + {@html ``} + + +
+ + + +
+ +
+ + +
+

Legal

+

Privacy Policy

+
+ Effective Date: March 1, 2026 + Last Updated: March 1, 2026 +
+
+ +
+ + +
+

1. Introduction

+

+ JioBase is a managed reverse proxy service that routes Supabase API traffic through Cloudflare's global edge network. The service is designed to bypass ISP-level DNS blocking of *.supabase.co in India, allowing developers to keep their applications functioning without infrastructure changes. +

+

+ This Privacy Policy explains what personal data JioBase collects, how that data is used, and your rights regarding your information. It applies to all users of the JioBase website (jiobase.com), the JioBase dashboard, the JioBase management API, and the proxy infrastructure. +

+

+ By registering for a JioBase account or using the service, you acknowledge that you have read and understood this Privacy Policy. If you do not agree with this policy, please do not use the service. +

+

+ Disclaimer: JioBase is an independent project operated by Sunith VS. It is not affiliated with, endorsed by, or connected to Supabase Inc., Cloudflare Inc., Jio Platforms Limited, or Reliance Industries. The name "JioBase" is a project name and domain, not a registered trade name or business entity. +

+
+ + +
+

2. Data Controller Information

+
+
+
+ Name + Sunith VS +
+
+ Role + Individual Developer and Data Fiduciary +
+
+ Location + India +
+
+ Website + sunithvs.com +
+
+ Email + jiobase@sunithvs.com +
+
+
+
+ + +
+

3. Data We Collect

+

+ JioBase collects the minimum data necessary to provide the service. The data we collect falls into the following categories: +

+ + +
+

3.1 Account Data

+

+ Collected when you register for a JioBase account: +

+
    +
  • + + Email address - used as your unique identifier and for account communications +
  • +
  • + + Password (hashed) - stored only as a PBKDF2 hash with 100,000 iterations using SHA-256. Your plaintext password is never stored +
  • +
  • + + Name - used to personalize your dashboard experience +
  • +
+
+ + +
+

3.2 App Configuration Data

+

+ Collected when you create a proxy app: +

+
    +
  • + + App name - a label you choose for your proxy app +
  • +
  • + + Slug - a unique subdomain identifier (e.g., myapp.jiobase.com) +
  • +
  • + + Supabase project URL - the upstream Supabase URL your proxy routes traffic to +
  • +
+
+ + +
+

3.3 Usage Data

+

+ Collected automatically as your proxy handles requests: +

+
    +
  • + + Request counts - the total number of API requests processed by your proxy app +
  • +
  • + + Timestamps - when each request was processed +
  • +
  • + + HTTP status codes - the response status returned by Supabase (e.g., 200, 404, 500) +
  • +
  • + + Response latency - the time taken to fulfill each proxied request +
  • +
+
+ + +
+

3.4 Session Data

+

+ Collected when you log in to the JioBase dashboard: +

+
    +
  • + + Session token - a randomly generated identifier stored in a secure cookie +
  • +
  • + + IP address at login - recorded at the time of authentication +
  • +
  • + + User agent - the browser and operating system used to access the dashboard +
  • +
+
+ + +
+

3.5 Technical Data

+

+ Collected automatically when you access the JioBase website or dashboard: +

+
    +
  • + + Browser type and version +
  • +
  • + + Device type (desktop, mobile, tablet) +
  • +
  • + + Referring URL +
  • +
+
+
+ + +
+

4. Data That Transits Our Infrastructure (NOT Collected)

+ +
+
+ +

+ This is the most important section of this policy. Because JioBase acts as a reverse proxy, all of your Supabase traffic flows through our infrastructure. However, JioBase's application code does not read, store, log, cache, or process the contents of this traffic. The proxy simply forwards requests to Supabase and returns responses to your client. +

+
+
+ +

+ The following types of data pass through JioBase's proxy but are never collected, stored, logged, cached, or processed by JioBase: +

+ +
    +
  • + + API request and response payloads - the actual data your application sends to and receives from Supabase (database rows, JSON responses, form data) +
  • +
  • + + Supabase authentication tokens (JWT) - your users' access tokens, refresh tokens, and session data managed by Supabase Auth +
  • +
  • + + File upload and download content - images, documents, and other files transferred through Supabase Storage +
  • +
  • + + WebSocket message payloads - Realtime subscription data, presence updates, and broadcast messages +
  • +
  • + + Database query contents and results - SQL queries, PostgREST filter parameters, RPC function arguments, and returned data +
  • +
+ +
+

Cloudflare's Role in Transit

+

+ JioBase runs on Cloudflare Workers. TLS encryption is terminated at Cloudflare's edge network, which means Cloudflare has technical access to the unencrypted request and response data in transit. This is standard for any service hosted behind Cloudflare and is necessary for the proxy to function. However, JioBase's application code does not access, inspect, or log payload contents at any point. Cloudflare's handling of data in transit is governed by Cloudflare's Privacy Policy. +

+
+
+ + +
+

5. How We Use Your Data

+

+ JioBase uses the data described in Section 3 for the following purposes: +

+
    +
  • + + Service operation - to authenticate you, route proxy traffic to the correct Supabase project, and display usage metrics in your dashboard +
  • +
  • + + Rate limiting and quota enforcement - to track your usage against your plan limits (free tier: 1 app, 50,000 requests per month) and enforce rate limits +
  • +
  • + + Abuse detection and prevention - to identify unusual traffic patterns that may indicate misuse of the service +
  • +
  • + + Account communications - to send you essential service notifications such as quota warnings, security alerts, or changes to the terms of service +
  • +
  • + + Service improvement - to analyze aggregated, anonymized usage patterns to improve the reliability and performance of the proxy +
  • +
+
+ + +
+

6. Legal Basis for Processing

+

+ JioBase processes your personal data under the following legal bases: +

+
+
+

Consent (Registration)

+

+ By creating a JioBase account, you provide explicit consent for us to process your account data for the purpose of providing the service. You may withdraw this consent at any time by deleting your account. +

+
+
+

Contractual Necessity

+

+ Processing of app configuration data and usage metrics is necessary to fulfill our contractual obligation to provide the proxy service, enforce plan limits, and display your usage dashboard. +

+
+
+

Legitimate Interest

+

+ Processing of session data, technical data, and aggregated analytics is carried out in our legitimate interest to maintain the security, stability, and reliability of the service, and to prevent abuse. +

+
+
+
+ + +
+

7. Data Sharing and Third Parties

+

+ JioBase does not sell, rent, or trade your personal data to any third party. Data is shared only in the following limited circumstances: +

+
+
+

Cloudflare, Inc. (Infrastructure Provider)

+

+ JioBase's entire infrastructure runs on Cloudflare's platform, including Workers (compute), D1 (database), KV (key-value storage), Pages (web hosting), and Analytics Engine (metrics). Cloudflare processes data as a sub-processor on our behalf and in accordance with their own privacy policy. You can review Cloudflare's Privacy Policy for details on how they handle data. +

+
+
+

Law Enforcement and Legal Requirements

+

+ JioBase may disclose your personal data if required to do so by law, regulation, legal process, or enforceable governmental request. This includes responding to lawful requests from Indian authorities under the Information Technology Act, 2000 and the Digital Personal Data Protection Act, 2023. We will notify you of such requests unless legally prohibited from doing so. +

+
+
+
+ + +
+

8. Data Retention

+

+ JioBase retains your data only for as long as necessary to provide the service and fulfill legal obligations: +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Data TypeRetention Period
Account data (email, name, hashed password)While your account is active, plus 30 days after account deletion
App configuration dataWhile your account is active, plus 30 days after account deletion
Usage metrics (request counts, latency, status codes)12 months from the date of collection
Session dataExpires per session time-to-live (TTL) configuration
Transit data (API payloads, tokens, files, WebSocket messages)Not retained. This data passes through and is never stored.
System and infrastructure logsPer Cloudflare's retention policy (typically 72 hours)
+
+
+ + +
+

9. Your Rights (Under DPDP Act, 2023)

+

+ As a Data Principal under the Digital Personal Data Protection Act, 2023, you have the following rights: +

+
+
+

Right to Access

+

+ You have the right to obtain a summary of your personal data held by JioBase, including the processing activities performed on that data. You can view most of your data directly through the dashboard. For a complete data export, contact us at jiobase@sunithvs.com. +

+
+
+

Right to Correction

+

+ You have the right to correct inaccurate or incomplete personal data. You can update your name and email through the dashboard, or contact us for assistance. +

+
+
+

Right to Erasure (Account Deletion)

+

+ You have the right to request the deletion of your personal data. When you delete your account, all associated data (account information, app configurations, and usage metrics) will be permanently removed within 30 days. To request account deletion, use the account settings page in the dashboard or contact us directly. +

+
+
+

Right to Withdraw Consent

+

+ You may withdraw your consent for data processing at any time by deleting your account. Withdrawal of consent does not affect the lawfulness of processing carried out before the withdrawal. +

+
+
+

Right to Nominate

+

+ Under the DPDP Act, 2023, you have the right to nominate another individual to exercise your data rights on your behalf in the event of your death or incapacity. To register a nominee, contact us at jiobase@sunithvs.com. +

+
+
+

Right to Grievance Redressal

+

+ You have the right to file a complaint regarding the processing of your personal data. See Section 17 (Grievance Officer) for the complaint process and timelines. +

+
+
+
+ + +
+

10. Data Security

+

+ JioBase implements technical and organizational measures to protect your personal data against unauthorized access, alteration, disclosure, or destruction: +

+
    +
  • + + Password hashing - all passwords are hashed using PBKDF2 with 100,000 iterations and SHA-256. Plaintext passwords are never stored or logged. +
  • +
  • + + TLS encryption in transit - all connections to JioBase (both from clients and to Supabase) use TLS encryption. Connections without TLS are rejected. +
  • +
  • + + Cloudflare infrastructure security - all data at rest in D1 and KV is encrypted by Cloudflare. Cloudflare's data centers implement physical security controls and are SOC 2 Type II certified. +
  • +
  • + + Secure session cookies - the jb_session cookie is configured as HTTP-only and Secure, preventing client-side JavaScript access and ensuring transmission only over HTTPS. +
  • +
  • + + Timing-safe authentication - login and session validation use constant-time comparison functions to prevent timing-based attacks. +
  • +
  • + + Rate limiting and lockout - login endpoints implement rate limiting and account lockout mechanisms to prevent brute-force attacks. +
  • +
+
+ + +
+

11. Cookies

+

+ JioBase uses a single cookie that is strictly necessary for the service to function: +

+
+ + + + + + + + + + + + + + + +
CookiePurposeType
jb_sessionAuthenticates your session when logged in to the dashboardStrictly necessary, HTTP-only, Secure
+
+

+ JioBase does not use any tracking cookies, analytics cookies, advertising cookies, or third-party cookies. No cookie consent banner is required because the sole cookie used is strictly necessary for the service to function. +

+
+ + +
+

12. Children's Privacy

+

+ JioBase is a developer tool intended for use by software developers and businesses. The service is not directed at individuals under the age of 18. JioBase does not knowingly collect personal data from children under 18. If you believe that a child under 18 has provided personal data to JioBase, please contact us at jiobase@sunithvs.com, and we will promptly delete the data and terminate the associated account. +

+
+ + +
+

13. International Data Transfers

+

+ JioBase processes data on Cloudflare's global edge network, which spans over 300 cities in more than 100 countries. Your data may be processed at any of Cloudflare's data center locations worldwide, including locations outside of India. Cloudflare applies consistent security and privacy protections across its entire network, regardless of location. By using JioBase, you acknowledge that your data may be transferred to and processed in locations outside India as part of Cloudflare's standard infrastructure operations. +

+
+ + +
+

14. DPDP Act, 2023 Compliance

+

+ JioBase is committed to compliance with the Digital Personal Data Protection Act, 2023 (DPDP Act). As a Data Fiduciary under the Act, JioBase adheres to the following obligations: +

+
    +
  • + + Consent - JioBase obtains clear, informed consent at the time of account registration. Consent is specific to the purposes described in this policy and can be withdrawn at any time. +
  • +
  • + + Purpose limitation - personal data is processed only for the specific purposes described in Section 5 of this policy. Data is not repurposed without obtaining fresh consent. +
  • +
  • + + Storage limitation - personal data is retained only for the durations specified in Section 8. Data is deleted when it is no longer necessary for the stated purpose or upon your request. +
  • +
  • + + Data accuracy - JioBase provides mechanisms for you to review and correct your personal data through the dashboard and by contacting the Grievance Officer. +
  • +
  • + + Reasonable security safeguards - JioBase implements the technical and organizational security measures described in Section 10 to protect personal data against breaches. +
  • +
+
+ + +
+

15. CERT-In Compliance

+

+ JioBase complies with the directions issued by the Indian Computer Emergency Response Team (CERT-In) under Section 70B of the Information Technology Act, 2000: +

+
    +
  • + + Incident reporting - cybersecurity incidents, including data breaches, unauthorized access, and service disruptions, will be reported to CERT-In within the mandated timeframe of 6 hours of becoming aware of the incident. +
  • +
  • + + Log retention - system logs relevant to cybersecurity are maintained within Cloudflare's infrastructure. JioBase cooperates with Cloudflare to ensure logs are available for the periods mandated by CERT-In directives. +
  • +
  • + + Point of contact - the Grievance Officer named in Section 17 serves as the designated point of contact for CERT-In communications. +
  • +
+
+ + +
+

16. Intermediary Status

+

+ JioBase operates as an intermediary under Section 2(1)(w) of the Information Technology Act, 2000. As a reverse proxy service, JioBase functions as a mere conduit for data transmitted between your application's end users and your Supabase project. +

+

+ Under Section 79 of the IT Act, JioBase is eligible for safe harbor protection because: +

+
    +
  • + + JioBase's role is limited to providing access to a communication system over which data is transmitted or temporarily stored +
  • +
  • + + JioBase does not initiate the transmission, select the receiver of the transmission, or select or modify the information contained in the transmission +
  • +
  • + + JioBase observes due diligence as required under the IT Act and applicable rules +
  • +
+

+ You, as the developer, remain solely responsible for the data that your application transmits through the proxy and for ensuring that your use of Supabase complies with applicable laws. +

+
+ + +
+

17. Grievance Officer

+

+ In accordance with the Information Technology Act, 2000 and the Digital Personal Data Protection Act, 2023, JioBase has appointed the following Grievance Officer: +

+
+
+
+ Name + Sunith VS +
+
+ Email + jiobase@sunithvs.com +
+
+
+
+

+ Complaint process: If you have a concern about how JioBase handles your personal data, you may submit a written complaint to the Grievance Officer at the email address above. +

+
    +
  • + + Your complaint will be acknowledged within 24 hours of receipt +
  • +
  • + + The Grievance Officer will investigate and resolve your complaint within 15 days of acknowledgment +
  • +
  • + + If you are not satisfied with the resolution, you may escalate the matter to the Data Protection Board of India established under the DPDP Act, 2023 +
  • +
+
+
+ + +
+

18. Changes to This Privacy Policy

+

+ JioBase may update this Privacy Policy from time to time to reflect changes in our practices, technology, legal requirements, or other factors. When we make changes: +

+
    +
  • + + We will provide at least 30 days' notice before material changes take effect +
  • +
  • + + Notice will be provided via email to the address associated with your account +
  • +
  • + + The "Last Updated" date at the top of this page will be revised +
  • +
  • + + Continued use of the service after the effective date of the updated policy constitutes acceptance of the changes +
  • +
+
+ + +
+

19. Contact Information

+

+ If you have any questions about this Privacy Policy, your personal data, or your rights, you can reach us through the following channels: +

+
+
+
+ Email + jiobase@sunithvs.com +
+
+ Website + sunithvs.com +
+
+
+
+ +
+
+ + +
+
+
+
+ Home + Docs + Blog + Privacy +
+

© {new Date().getFullYear()} JioBase. Built on Cloudflare.

+
+
+
+
diff --git a/apps/web/src/routes/register/+page.svelte b/apps/web/src/routes/register/+page.svelte index 0253811..c126e29 100644 --- a/apps/web/src/routes/register/+page.svelte +++ b/apps/web/src/routes/register/+page.svelte @@ -8,6 +8,7 @@ let name = $state(''); let email = $state(''); let password = $state(''); + let agreedToTerms = $state(false); let error = $state(''); let submitting = $state(false); @@ -94,10 +95,26 @@

Must be at least 8 characters

+
+ + +
+ diff --git a/apps/web/src/routes/sitemap.xml/+server.ts b/apps/web/src/routes/sitemap.xml/+server.ts index d8378f8..4ca2a9f 100644 --- a/apps/web/src/routes/sitemap.xml/+server.ts +++ b/apps/web/src/routes/sitemap.xml/+server.ts @@ -14,11 +14,20 @@ const staticPages = [ { path: '/blog/fix-supabase-jio-5-minutes', priority: '0.7', changefreq: 'monthly' }, { path: '/blog/supabase-err-connection-timed-out-india', priority: '0.7', changefreq: 'monthly' }, { path: '/blog/why-supabase-banned-india-section-69a', priority: '0.7', changefreq: 'monthly' }, + { path: '/blog/supabase-india-block-timeline', priority: '0.7', changefreq: 'monthly' }, + { path: '/blog/supabase-production-app-broken-india', priority: '0.7', changefreq: 'monthly' }, + { path: '/blog/india-blocking-developer-tools-history', priority: '0.7', changefreq: 'monthly' }, + { path: '/blog/dns-poisoning-supabase-india-explained', priority: '0.7', changefreq: 'monthly' }, + { path: '/blog/supabase-vs-firebase-both-blocked-india', priority: '0.7', changefreq: 'monthly' }, + { path: '/blog/india-disrupts-supabase-blocking-order', priority: '0.7', changefreq: 'monthly' }, + { path: '/blog/supabase-network-connectivity-problems-india', priority: '0.7', changefreq: 'monthly' }, { path: '/docs', priority: '0.8', changefreq: 'weekly' }, { path: '/tools/worker-generator', priority: '0.8', changefreq: 'monthly' }, { path: '/india-status', priority: '0.6', changefreq: 'weekly' }, { path: '/login', priority: '0.3', changefreq: 'yearly' }, { path: '/register', priority: '0.3', changefreq: 'yearly' }, + { path: '/terms', priority: '0.3', changefreq: 'yearly' }, + { path: '/privacy', priority: '0.3', changefreq: 'yearly' }, ]; // Dynamically generate /fix/ and /guides/ pages from SEO data diff --git a/apps/web/src/routes/terms/+page.svelte b/apps/web/src/routes/terms/+page.svelte new file mode 100644 index 0000000..3ad21df --- /dev/null +++ b/apps/web/src/routes/terms/+page.svelte @@ -0,0 +1,713 @@ + + + + Terms of Service - JioBase + + + +
+ + + +
+ +
+ +
+

Legal

+

Terms of Service

+
+

Effective Date: March 1, 2026

+

Last Updated: March 1, 2026

+
+
+ + + + + +
+ + +
+

1. Agreement to Terms

+

+ These Terms of Service ("Terms") constitute a legally binding agreement between you ("User", "you", or "your") and Sunith VS, an individual developer operating the project JioBase ("JioBase", "we", "us", or "our"), governing your access to and use of the JioBase service available at jiobase.com and all associated subdomains, APIs, and tools (collectively, the "Service"). JioBase is a project name and domain, not a registered trade name or business entity. +

+

+ By creating an account, accessing, or using the Service, you acknowledge that you have read, understood, and agree to be bound by these Terms. If you do not agree to these Terms, you must not use the Service. If you are using the Service on behalf of an organization, you represent and warrant that you have the authority to bind that organization to these Terms. +

+

+ You must be at least 18 years of age, or the age of legal majority in your jurisdiction, to use this Service. +

+
+ + +
+

2. Description of Service

+

+ JioBase is a managed reverse proxy service that routes Supabase API traffic through Cloudflare's global edge network. The Service is designed to provide an alternative network path for API requests in situations where direct connectivity to *.supabase.co may be unavailable, such as ISP-level DNS blocking. +

+ +
+

What JioBase is

+
    +
  • + + A transparent HTTP/WebSocket reverse proxy for Supabase APIs +
  • +
  • + + A pass-through relay that forwards requests to Supabase and returns responses without modification +
  • +
  • + + Hosted entirely on Cloudflare's infrastructure (Workers, D1, KV, Pages) +
  • +
+
+ +
+

What JioBase is not

+
    +
  • + + Not a VPN, anonymization tool, or general-purpose proxy +
  • +
  • + + Not a data storage or caching service for user content +
  • +
  • + + Not a tool designed to circumvent lawful content restrictions or access prohibited material +
  • +
+
+ +

+ The Service supports the full Supabase API surface, including REST (PostgREST), Authentication, Storage, Realtime (WebSockets), Edge Functions, and GraphQL endpoints. +

+
+ + +
+

3. Account Registration

+

+ To use the Service, you must create an account by providing a valid email address and password. You agree to: +

+
    +
  • + a. + Provide accurate, current, and complete information during registration +
  • +
  • + b. + Maintain and promptly update your account information to keep it accurate +
  • +
  • + c. + Maintain the confidentiality of your password and not share your credentials with any third party +
  • +
  • + d. + Immediately notify us of any unauthorized access to or use of your account +
  • +
  • + e. + Accept responsibility for all activity that occurs under your account +
  • +
+

+ We reserve the right to refuse registration, suspend, or terminate accounts at our discretion, including for suspected violations of these Terms. +

+

+ Passwords are hashed using PBKDF2 with 100,000 iterations of SHA-256 before storage. We never store plaintext passwords. However, the security of your account also depends on your choice of a strong, unique password. +

+
+ + +
+

4. Data Transit vs. Data Storage

+

+ Understanding how your data flows through JioBase is critical. We distinguish between two categories: +

+ +
+

Transit Data (data that passes through)

+

+ All Supabase API payloads, including database queries, authentication tokens, file uploads, and WebSocket messages, flow through JioBase's proxy infrastructure. This data is classified as "Transit Data." +

+
    +
  • + + JioBase does not read, inspect, parse, modify, store, cache, or log Transit Data +
  • +
  • + + The proxy code forwards request and response bodies verbatim between client and Supabase +
  • +
  • + + All connections are encrypted via TLS (HTTPS/WSS) in both directions +
  • +
+

+ TLS disclosure: Cloudflare terminates TLS at the edge as part of its standard infrastructure. This means Transit Data is briefly decrypted in Cloudflare's memory during forwarding, consistent with how all Cloudflare-proxied services operate. JioBase's application code does not access, inspect, or log these payloads at any point. +

+
+ +
+

Service Data (data we collect)

+

+ JioBase collects and stores limited data necessary to operate the Service. This data is classified as "Service Data" and includes: +

+
    +
  • + - + Account information: email address, hashed password, account creation date +
  • +
  • + - + App configuration: app name, slug, target Supabase project URL, CORS settings, rate limit settings +
  • +
  • + - + Usage metrics: request count, timestamps, HTTP response status codes, response latency +
  • +
  • + - + Session data: authentication session tokens (stored as the jb_session cookie) +
  • +
+

+ Service Data is stored in Cloudflare D1 (SQLite) and Cloudflare KV. It is not sold, shared with third parties, or used for advertising purposes. +

+
+
+ + +
+

5. Acceptable Use

+

+ You agree to use the Service only for its intended purpose: proxying legitimate Supabase API traffic for your own applications. In addition, you agree to: +

+
    +
  • + a. + Comply with Supabase's own Terms of Service and Acceptable Use Policy at all times +
  • +
  • + b. + Comply with all applicable local, state, national, and international laws and regulations +
  • +
  • + c. + Use the Service only with Supabase projects that you own or have authorization to access +
  • +
  • + d. + Ensure that the content and data transmitted through the proxy complies with all applicable laws +
  • +
  • + e. + Not exceed the usage limits of your plan tier (free tier: 1 app, 50,000 requests per month) +
  • +
  • + f. + Not resell, sublicense, or commercially redistribute access to the proxy service without prior written consent +
  • +
+
+ + +
+

6. Prohibited Activities

+

+ You may not use the Service to: +

+
    +
  • + + Transmit, store, or process illegal content, including child sexual abuse material, terrorist content, or content that violates Indian law +
  • +
  • + + Conduct distributed denial-of-service (DDoS) attacks, credential stuffing, brute force attacks, or any form of network abuse +
  • +
  • + + Attempt to gain unauthorized access to Supabase projects, accounts, or systems belonging to others +
  • +
  • + + Use the proxy to hide the origin of malicious traffic or to circumvent security controls on Supabase projects +
  • +
  • + + Proxy traffic to non-Supabase endpoints or use the Service as a general-purpose proxy or VPN +
  • +
  • + + Scrape, mine, or harvest data from Supabase projects belonging to others +
  • +
  • + + Reverse-engineer, decompile, or disassemble the Service's proprietary components +
  • +
  • + + Interfere with or disrupt the Service, its servers, or the networks connected to it +
  • +
  • + + Resell or redistribute access to JioBase proxy endpoints without written authorization +
  • +
+

+ Violation of any prohibited activity may result in immediate account suspension or termination without prior notice. +

+
+ + +
+

7. Service Availability

+

+ JioBase is provided on an "as available" basis. While we strive to maintain high availability, we do not guarantee any specific uptime percentage or service level. +

+
    +
  • + a. + The Service may experience downtime for maintenance, updates, or upgrades. We will endeavor to provide reasonable advance notice of planned maintenance via the dashboard or email. +
  • +
  • + b. + We reserve the right to modify, suspend, or discontinue any part of the Service, temporarily or permanently, with or without notice. +
  • +
  • + c. + For discontinuation of the Service as a whole, we will provide at least 30 days' notice to allow you to make alternative arrangements. +
  • +
  • + d. + We are not liable for any loss or damage arising from Service interruptions, regardless of cause. +
  • +
+
+ + +
+

8. Upstream Dependencies

+

+ JioBase depends on third-party infrastructure and services, primarily Supabase and Cloudflare. You acknowledge and agree that: +

+
    +
  • + a. + JioBase is not responsible for outages, errors, downtime, or degraded performance of Supabase or Cloudflare services +
  • +
  • + b. + Changes to Supabase's API, pricing, terms of service, or infrastructure may affect the functionality of JioBase, and we are not liable for such changes +
  • +
  • + c. + If Supabase blocks, rate-limits, or restricts traffic originating from JioBase proxy endpoints, we are not liable for any resulting disruption +
  • +
  • + d. + JioBase is an independent project and has no affiliation with, endorsement from, or partnership with Supabase Inc., Cloudflare Inc., Jio Platforms Limited, or Reliance Industries. The name "JioBase" is a project name only and does not imply any connection to Jio or Reliance brands. +
  • +
  • + e. + Your use of Supabase through JioBase remains subject to Supabase's own Terms of Service and policies +
  • +
+
+ + +
+

9. ISP and Network Disclaimer

+

+ JioBase provides an alternative network path for Supabase API traffic. However, you acknowledge and agree that: +

+
    +
  • + a. + We do not guarantee that the Service will successfully bypass any specific ISP restriction, DNS block, or network-level interference +
  • +
  • + b. + ISPs or government authorities may at any time block or restrict access to JioBase domains (including *.jiobase.com), and we are not responsible for such blocks +
  • +
  • + c. + Network conditions, routing, and latency between your users, Cloudflare's edge, and Supabase's servers are outside our control +
  • +
  • + d. + The Service does not guarantee connectivity from any specific geographic region, ISP, or network provider +
  • +
+
+
+ +

+ You are solely responsible for evaluating whether using a proxy service is appropriate and lawful for your specific use case and jurisdiction. JioBase does not provide legal advice. +

+
+
+
+ + +
+

10. Intellectual Property

+

+ The Service, including its source code, design, documentation, branding, logos, and all associated intellectual property, is owned by Sunith VS and is protected by applicable intellectual property laws. +

+
    +
  • + a. + Our rights: We retain all rights, title, and interest in and to the Service, including any modifications, improvements, or derivative works. The JioBase name, logo, and related marks are our property. +
  • +
  • + b. + Your rights: You retain all rights to your data and content. Nothing in these Terms transfers ownership of your data to us. The Service merely acts as a conduit for your data in transit. +
  • +
  • + c. + License grant: We grant you a limited, non-exclusive, non-transferable, revocable license to access and use the Service in accordance with these Terms for the duration of your account. +
  • +
  • + d. + Open source: Portions of the Service may be released under open-source licenses. Where applicable, the terms of those licenses govern the use of that specific code. +
  • +
+
+ + +
+

11. Limitation of Liability

+
+

Important notice

+

+ THE SERVICE IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTIES OF ANY KIND, WHETHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, AND NON-INFRINGEMENT. +

+
+ +

+ To the maximum extent permitted by applicable law: +

+
    +
  • + a. + JioBase, its operator, affiliates, and contributors shall not be liable for any indirect, incidental, special, consequential, or punitive damages, including but not limited to loss of profits, revenue, data, business opportunities, or goodwill, arising from your use of or inability to use the Service. +
  • +
  • + b. + Our total aggregate liability for all claims arising out of or related to these Terms or the Service shall not exceed the greater of: (i) the total fees you paid to JioBase during the twelve (12) months immediately preceding the event giving rise to the claim, or (ii) one thousand Indian Rupees (INR 1,000). +
  • +
  • + c. + We are not liable for any damages arising from: Supabase outages or API changes; Cloudflare infrastructure failures; ISP-level blocking of JioBase or Supabase domains; government-ordered restrictions on internet access; unauthorized access to your account due to your failure to safeguard credentials; or any third-party actions beyond our reasonable control. +
  • +
+

+ Some jurisdictions do not allow the exclusion or limitation of certain damages. In such jurisdictions, our liability shall be limited to the maximum extent permitted by law. +

+
+ + +
+

12. Indemnification

+

+ You agree to indemnify, defend, and hold harmless JioBase, its operator (Sunith VS), and any contributors from and against any and all claims, damages, losses, liabilities, costs, and expenses (including reasonable legal fees) arising out of or related to: +

+
    +
  • + a. + Your use of the Service or any activity conducted through your account +
  • +
  • + b. + Your violation of these Terms, any applicable law, or any third-party rights +
  • +
  • + c. + The content or data you transmit through the Service +
  • +
  • + d. + Any claim by a third party related to your use of the Supabase project proxied through JioBase +
  • +
+

+ This indemnification obligation will survive the termination of these Terms and your use of the Service. +

+
+ + +
+

13. Termination

+ +

Termination by you

+

+ You may terminate your account at any time by contacting us or through the dashboard (when available). Upon termination, your proxy endpoints will be deactivated and your account data will be deleted. +

+ +

Termination by JioBase

+

+ We may suspend or terminate your account and access to the Service immediately, without prior notice or liability, for any reason, including but not limited to: +

+
    +
  • + a. + Breach of these Terms or any applicable law +
  • +
  • + b. + Engaging in prohibited activities as described in Section 6 +
  • +
  • + c. + Requests from law enforcement or government agencies +
  • +
  • + d. + Extended inactivity (no API requests for more than 90 consecutive days) +
  • +
  • + e. + Discontinuation of the Service as a whole (subject to 30 days' notice) +
  • +
+ +

Effect of termination

+

+ Upon termination of your account, regardless of the reason: +

+
    +
  • + a. + All proxy endpoints assigned to your account will be deactivated immediately +
  • +
  • + b. + Your app configurations will be removed from the proxy routing layer +
  • +
  • + c. + Your account information and usage data will be deleted within 30 days +
  • +
  • + d. + Your Supabase project and its data are unaffected since JioBase does not store any of your Supabase data +
  • +
  • + e. + Provisions that by their nature should survive termination (including Sections 11, 12, 14, and 17) will remain in effect +
  • +
+
+ + +
+

14. Governing Law and Dispute Resolution

+

+ These Terms shall be governed by and construed in accordance with the laws of India, without regard to conflict-of-law principles. +

+

+ Any disputes arising out of or relating to these Terms or the Service shall be subject to the exclusive jurisdiction of the courts located in Kerala, India. You consent to the personal jurisdiction and venue of such courts and waive any objection based on inconvenient forum. +

+

+ Before filing any legal claim, you agree to attempt to resolve the dispute informally by contacting us at the address listed in Section 18. We will attempt to resolve the dispute within 30 days. If the dispute is not resolved informally, either party may proceed with formal legal action. +

+
+ + +
+

15. Changes to Terms

+

+ We reserve the right to modify these Terms at any time. When we make material changes, we will: +

+
    +
  • + a. + Provide at least 30 days' advance notice before the revised Terms take effect +
  • +
  • + b. + Notify you via email to the address associated with your account +
  • +
  • + c. + Display a prominent notice on the dashboard upon your next login +
  • +
  • + d. + Update the "Last Updated" date at the top of this page +
  • +
+

+ Your continued use of the Service after the effective date of the revised Terms constitutes acceptance of the changes. If you do not agree to the revised Terms, you must stop using the Service and terminate your account before the changes take effect. +

+
+ + +
+

16. Force Majeure

+

+ JioBase shall not be liable for any failure or delay in performing its obligations under these Terms where such failure or delay results from events beyond our reasonable control, including but not limited to: +

+
    +
  • + - + ISP-level DNS blocks, IP blocks, or other network-level restrictions imposed by internet service providers +
  • +
  • + - + Government orders, regulations, sanctions, or directives that restrict internet access or service availability +
  • +
  • + - + Actions taken by Supabase, Cloudflare, or other upstream providers that affect the Service +
  • +
  • + - + Natural disasters, pandemics, acts of war, terrorism, or civil unrest +
  • +
  • + - + Power outages, telecommunications failures, cyberattacks, or other infrastructure failures beyond our control +
  • +
  • + - + Changes in applicable law or regulation that make performance impracticable or unlawful +
  • +
+

+ In the event of a force majeure event, our obligations under these Terms will be suspended for the duration of the event, and we will make reasonable efforts to resume performance as soon as practicable. +

+
+ + +
+

17. General Provisions

+ +

Severability

+

+ If any provision of these Terms is held to be invalid, illegal, or unenforceable by a court of competent jurisdiction, that provision shall be modified to the minimum extent necessary to make it valid and enforceable, or if modification is not possible, it shall be severed from these Terms. The remaining provisions shall continue in full force and effect. +

+ +

Entire agreement

+

+ These Terms, together with any Privacy Policy and other legal documents referenced herein, constitute the entire agreement between you and JioBase regarding the Service. They supersede all prior and contemporaneous understandings, agreements, representations, and warranties, whether written or oral, regarding the Service. +

+ +

Waiver

+

+ The failure of JioBase to enforce any right or provision of these Terms shall not constitute a waiver of that right or provision. Any waiver of any provision of these Terms will be effective only if in writing and signed by JioBase. +

+ +

Assignment

+

+ You may not assign or transfer these Terms, or any rights or obligations hereunder, without our prior written consent. JioBase may assign these Terms without restriction. Any attempted assignment in violation of this section shall be void. +

+ +

No third-party beneficiaries

+

+ These Terms do not create any third-party beneficiary rights. Nothing in these Terms is intended to confer upon any person or entity other than you and JioBase any rights or remedies. +

+
+ + +
+

18. Contact Information

+

+ If you have any questions about these Terms, or if you wish to report a violation, please contact us: +

+ +
+
+
+ Operator: + Sunith VS +
+
+ Email: + jiobase@sunithvs.com +
+
+ Website: + sunithvs.com +
+
+ Location: + Kerala, India +
+
+
+ +
+

Grievance Officer

+

+ In accordance with the Information Technology Act, 2000 and the rules made thereunder, the Grievance Officer for the purpose of these Terms is: +

+
+
+ Name: + Sunith VS +
+
+ Email: + jiobase@sunithvs.com +
+
+ Response time: + We will acknowledge your complaint within 48 hours and resolve it within 30 days from the date of receipt. +
+
+
+
+ +
+
+ + +
+
+
+
+ Home + Docs + Blog +
+

© {new Date().getFullYear()} JioBase. Built on Cloudflare.

+
+
+
+
diff --git a/apps/web/src/routes/tools/worker-generator/+page.svelte b/apps/web/src/routes/tools/worker-generator/+page.svelte index 20c8cb9..f420e6e 100644 --- a/apps/web/src/routes/tools/worker-generator/+page.svelte +++ b/apps/web/src/routes/tools/worker-generator/+page.svelte @@ -106,6 +106,29 @@ export default { + {@html ``}
@@ -574,6 +597,8 @@ export default { Docs Blog GitHub + Terms + Privacy

diff --git a/apps/web/static/apple-touch-icon.png b/apps/web/static/apple-touch-icon.png new file mode 100644 index 0000000..673e381 Binary files /dev/null and b/apps/web/static/apple-touch-icon.png differ diff --git a/apps/web/static/favicon-192.png b/apps/web/static/favicon-192.png new file mode 100644 index 0000000..12f3764 Binary files /dev/null and b/apps/web/static/favicon-192.png differ diff --git a/apps/web/static/favicon-32.png b/apps/web/static/favicon-32.png new file mode 100644 index 0000000..0fe46c3 Binary files /dev/null and b/apps/web/static/favicon-32.png differ diff --git a/apps/web/static/favicon-512.png b/apps/web/static/favicon-512.png new file mode 100644 index 0000000..a10f780 Binary files /dev/null and b/apps/web/static/favicon-512.png differ diff --git a/apps/web/static/favicon.ico b/apps/web/static/favicon.ico new file mode 100644 index 0000000..fcaf853 Binary files /dev/null and b/apps/web/static/favicon.ico differ diff --git a/apps/web/static/favicon.svg b/apps/web/static/favicon.svg new file mode 100644 index 0000000..7d5f97c --- /dev/null +++ b/apps/web/static/favicon.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + diff --git a/apps/web/static/site.webmanifest b/apps/web/static/site.webmanifest new file mode 100644 index 0000000..64fa6a4 --- /dev/null +++ b/apps/web/static/site.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "JioBase", + "short_name": "JioBase", + "icons": [ + { + "src": "/favicon-192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/favicon-512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#3ecf8e", + "background_color": "#0a0a0a", + "display": "standalone" +} diff --git a/package.json b/package.json index 7b012ad..0076873 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,7 @@ { "name": "jiobase", "private": true, + "license": "AGPL-3.0-only", "scripts": { "dev": "turbo dev", "build": "turbo build", diff --git a/packages/shared/package.json b/packages/shared/package.json index bb962f1..b935eff 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -2,6 +2,7 @@ "name": "@jiobase/shared", "version": "0.0.1", "private": true, + "license": "AGPL-3.0-only", "type": "module", "main": "./dist/index.js", "types": "./dist/index.d.ts",