I just published a new version with improvements to user management and scalability:
๐ Added the ability to set limits on changes per user per collection
๐ซ Introduced banning / unbanning users to help prevent misuse
โจ Various enhancements & refinements across the board
Joining the wallet ๐ต display party โ balances and amounts are now displayed in USD on the Juno Console too! ๐
Kudos to KongSwap for sharing their exchange rate endpoint! ๐
While I was at it, I fixed a few navigation leftovers from the last version, reviewed the UX of all transaction modals, integrated the exchange feature into each of them, and... had some fun with the colors ๐จ
Iโm thrilled to unveil the first big feature of the year: a brand-new way for Juno devs to monitor your wallet and modules automatically! ๐
โ Keeps cycles topped up when balances run low
๐ Sends email notifications for top-ups (opt-in)
๐ Set it up once, never again โ itโs automatically applied to all future projects
Everything is controlled through the Mission Control โ which means that developers remain the sole controllers!
๐ฅ Exciting update! A new feature to automatically monitor your wallet and modules is here! ๐
โ Auto-refills cycles when balances run low ๐ฉ Sends email notifications when a top-up occurs
In this version, I also revised the navigation to integrate Analytics, Monitoring, Mission Control, and Wallet within the main panel. This update led to the introduction of new colors. ๐จ
Novemberโs been an exciting month, especially since Iโve officially started working full-time on Juno โ thanks to the recently announced funding! This shift has already led to delivering some fantastic new features for developers, like automated backups (finally!!!), support for large WASM modules, the ability to buy cycles with Stripe, and a few other goodies.
These updates are all about making development smoother and more efficient, whether youโre building dapps, smart contracts, or managing your projects. Letโs dive into whatโs new!
To kick things off, Iโd like to highlight the introduction of backupsโa feature Iโve been waiting for forever!
This addition brings a crucial layer of security for developers, letting you safeguard your modules and restore them whenever needed.
Hereโs how it works: Currently, one backup per module is supported. You can manage backups manually via both the Console UI and the CLI, with options to create, restore, or delete them. Additionally, backups are automatically created during the upgrade process, taking a snapshot before transitioning to a new version. For those who prefer full control, advanced options let you skip creating a backup or avoid overwriting an existing one.
For anyone who, like me, feels a bit tense whenever itโs time to execute an upgrade, this feature is a huge relief. Itโs really a great addition!
Getting cycles has become more straightforward, particularly for newcomers and non-crypto-native users, with the ability to buy cycles directly through Stripe, thanks to our friends at cycle.express.
With this integration, developers can simply make a payment, and the cycles are added directly to their module.
This was both a useful feature, as it makes it easy to transfer ICP from OISY to the developer's wallet on Juno, and an opportunity for me to try out the integration with various ICRC standards I implemented for the foundation.
I also used the opportunity to improve the UI/UX of the Receive feature by displaying wallet addresses with a QR code. This update wraps up a few related tasks, such as adding support for sending ICP to the outside world.
Support for larger WASM modules (over 2MB) has been added. While none of Juno's stock modulesโsuch as Satellites, Mission Control, or Orbiter (Analytics)โcome close to this size when gzipped, this limit could quickly be reached by developers using serverless functions.
By extending this limit, developers have more flexibility to embed additional third-party libraries and expand their module capabilities.
This support has been implemented across the CLI, the Console UI, and even local development environments using Docker, ensuring a consistent experience for all workflows.
Until recently, new Satellites launched lacked a default page for web hosting. This meant that developers opening their project right after creation would just see a blank page in the browser.
Thatโs why every new Satellite now comes with a sleek, informative default web pageโdelivering a great first impression right out of the box! โจ
Another handy tool introduced this month is support for pre- and post-deploy scripts in the CLI. With this feature, developers can now define a list of commands to be executed at specific stages of the deployment process.
The pre-deploy scripts are perfect for automating tasks like:
Compiling assets.
Running tests or linters.
Preparing production-ready files.
Likewise, post-deploy scripts come in handy for follow-up tasks, such as:
Sending notifications or alerts to administrators.
Cleaning up temporary files.
Logging deployment information for auditing.
import{ defineConfig }from"@junobuild/config"; /** @type{import('@junobuild/config').JunoConfig} */ exportdefaultdefineConfig({ satellite:{ id:"ck4tp-aaaaa-aaaaa-abbbb-cai", source:"build", predeploy:["npm run lint","npm run build"], postdeploy:["node hello.mjs"] } });
Maybe not the most groundbreaking update, but the dark theme got even darker. ๐งโโ๏ธ๐ฆ Perfect for those late-night coding sessionsโor if you just enjoy the vibe!
Another area that saw improvement is the documentation. I aimed to make it more intuitive and useful for both newcomers and experienced developers. Thatโs why I revamped the guides section. Now, when you visit, youโll be greeted with a simple question: โWhat are you looking to do? Build or Host?โ ๐ฏ. This approach should hopefully make onboarding smoother and more straightforward for developers.
The CLI documentation also received an upgrade. Updating it manually was a hassle, so I automated the process. Now, CLI help commands generate markdown files that are automatically embedded into the website every week. No more manual updates for me, and itโs always up to date for you! ๐
I also dedicated time to documenting all the configuration options in detail, ensuring every setting is clearly explained.
And as a finishing touch, I refreshed the landing page. ๐จโ๐จ
I hope these features get you as excited as they got me! Iโm already looking forward to whatโs next. Speak soon for more updates!
David
Stay connected with Juno by following us on X/Twitter.
As you may know, I recently proposed transforming Juno into a Decentralized Autonomous Organization through an SNS swap. Unfortunately, it didnโt reach its funding goal, so Juno didnโt become a DAO.
After the failure, three options came to mind: retrying the ICO with a lower target, continuing to hack as an indie project for a while, or simply killing it.
In the days that followed, I also received a few other options, including interest from venture capitalists for potential seed funding which wasnโt an option for me.
Then, something unexpected happened:
The DFINITY foundationโs CTO, Jan Camenisch, reached out and proposed an alternative: funding the project through 2025.
I took a few days to consider the offer and ultimately accepted.
This support is a tremendous vote of confidence in Junoโs potential and importance within the ecosystem.
Itโs worth emphasizing that the foundationโs support comes with no strings attached. They do not receive any stake in Juno, have no preferential treatment, and will not influence decisions. Should I ever consider another SNS DAO or any other funding route in the future, the foundation would have no special allocation or shares. This remains my project, and I am the sole decision-maker and controller.
This support also strengthens the relationship between Juno and the foundation, allowing us to stay in close contact to discuss the roadmap. Itโs an arrangement that respects autonomy while fostering collaboration to advance the Internet Computer. As they say, it takes two to tango.
This funding opens up a world of possibilities and marks the first time Iโll work 100% on a project I created. Iโm thrilled to continue building Juno as a resource that makes decentralized development accessible and impactful for everyone.
Obviously, while Juno remains under my sole ownership for now, I still believe that Juno should eventually become a DAO. Promoting full control for developers while retaining centralized ownership would be paradoxical. When the time is right, a DAO will ensure that Junoโs growth, security, and transparency are upheld through community-driven governance.
Thank you to everyone who believed in Juno through the SNS campaign and beyond ๐๐. Your support has been invaluable, and this new phase wouldnโt be possible without you. Hereโs to what lies aheadโa new chapter indeed.
To infinity and beyond,
David
Stay connected with Juno by following us on X/Twitter.
The SNS DAO on the Internet Computer failed on Saturday, October 12, 2024 (ICP swap data). As a result, Juno did not become a Decentralized Autonomous Organization (DAO).
Hey everyone ๐
I hope youโre all doing well! Iโm excited to share some big news with you today. Over the next few weeks, weโre taking some significant steps toward shaping the future of Juno, and I wanted to keep you in the loop about whatโs coming.
As you may know, Juno is a blockchain-as-a-service ecosystem that empowers developers to build decentralized apps efficiently. One of its strengths is that it gives developers full and sole control over their work. For this reason, it would be paradoxical to continue operating the platform with a centralized modelโi.e., with me being the sole controller of services, such as the administration console or our CDN. Thatโs why Iโm thrilled to unveil that, in the upcoming weeks, Iโm aiming to fix this bias by proposing that Juno becomes a Decentralized Autonomous Organization (DAO).
While this potential shift is on the horizon, there are a few key steps you can take to stay informed and involved in the process. Hereโs how you can help shape the future of developing on Web3:
To ensure you donโt miss any crucial updates, I encourage you to sign up for our newsletter. The journey to proposing a DAO and making it a reality involves multiple steps, each requiring your participation. By signing up, youโll receive timely notifications whenever thereโs an opportunity to get involved and make a real impact.
The white paper has been updated to continue presenting the vision; however, the tokenomics aspect has been notably removed, as it is no longer relevant following the failure of the SNS DAO.
Iโve put together a white paper that outlines the reasoning and vision I have for a Juno Build DAO. I highly recommend giving it a read to fully understand what Iโm aiming to achieve.
Questions are always welcome at any time, but if youโre looking to engage directly, Iโll be hosting a Juno Live session on 9 September at 3:00 PM CET. Join the livestream on YouTube to interact in real-time.
The proposal was approved and executed on September 26, 2024.
While I typically avoid relying on third parties for core features, transforming Juno into a DAO without leveraging such services would be an immense task. Thatโs why Iโm proposing to use the Internet Computerโs built-in solution for creating and maintaining DAOs, known as SNS.
To kickstart the process of transforming our ecosystem, this framework requires submitting a proposal to the Internet Computerโs governance, known as NNS. This step ensures a decentralized and democratic process. It also prepares for the handover of control of the smart contracts and allows all participants to review the parameters involved.
Once this proposal is live, your voice will be crucial! Youโll have the opportunity to vote on whether to accept or reject it.
Without your approval, the ICO wonโt even start.
Please note that the following does not constitute financial advice.
If the proposal is approved, an initial decentralization swap will be kicked off. The goal here is to raise the initial funds for the DAO and to decentralize the voting power. Think of it like crowdfunding, where people contribute ICP tokens. In return, participants are rewarded with staked tokens, giving them a share of the DAO's voting power.
For the swap to succeed, it requires at least 100 participants and 200,000 ICP tokens. Otherwise, the entire journey of transforming Juno into a DAO fails. So, if youโre excited about being part of this adventure, this could be the step where you make a real difference โ if you decide on your own will to do so.
If the swap fails, it will mark the beginning of the end. While the platform wonโt be deprecated immediately, I will gradually phase it out over the course of, let's say, a year. During this time, Juno will stop accepting new developers, and I will no longer develop new features, promote the eco-system, or invest in it beyond maintenance.
For those already using Juno, I want to reassure you that I wonโt leave you stranded. Iโm committed to offering support to help you transition and find suitable alternatives. Iโm not, I hope, that much of an a-hole. I try to maintain good karma.
On a personal note, I would also be deprecating all of my personal projects, such as proposals.network, as I have no intention of using any developer tooling other than Juno for my own Web3 projects.
If the swap is successful, hooray! Juno will officially become a DAO, allowing you to actively participate in the governance of the project and start using the new JUNOBUILD token, among other exciting developments.
This will mark the beginning of an exciting new chapter, with the community at the heart of Juno's future.
Memecoins are starting to gain significant traction. Some of these tokens, such as Windowge98, Damonic Welleams, Wumbo, Spellkaster and $stik, have reached high prices and attracted many retail investors into the ecosystem. Now, you may be wondering how these meme tokens were launched. In this article, we will walk you through all the steps you need to follow in order to create your own memecoin project.
From creating the token smart contract (canister) to building a marketing website using Juno, and finally launching the token on ICPSwap, a major decentralized exchange (DEX) on ICP, we've got you covered.
We will also provide useful tips to ensure your memecoin project is successful. By the end of this article, you will have all the information needed to launch your token.
important
This article is for educational purposes only and is not financial advice of any form.
The Internet Computer (ICP) is a blockchain-based platform that aims to create a new type of internet, one that is decentralized, secure, and scalable. Developed, among others, by the DFINITY Foundation, the Internet Computer is designed to serve as a global public compute infrastructure, allowing developers to build and deploy decentralized applications (dApps) and services directly on the blockchain. Learn more about ICP
Juno is a blockchain-as-a-service (โblockchainlessโ) platform that empowers developers to build decentralized apps efficiently. Similar to Web2 cloud service platforms but with significant improvements, it offers a comprehensive toolkit to scaffold secure and efficient projects running on the blockchain.
In short, Juno is the Google Firebase alternative for Web3.
There are simpler ways to launch your own token that do not involve scripting, such as using no-code platforms like ICTO, ICPEx or ICPI.
However, since Juno is dedicated to providing developers with full ownership without compromise, this tutorial showcases an approach that aligns with our core values.
If you prefer to use one of those services, that's cool. Some of those also share these values; we just suggest you do your own research before making a decision.
And who knows, maybe in the future, Juno itself will make launching ledgers to the moon easy too! ๐
To deploy a ledger for your token proceed as following:
Make sure you have the dfx CLI installed on your machine. If not, follow this guide to complete the installation.
Creating a canister requires cycles, which measure and pay for resources like memory, storage, and compute power. Follow this guide to load cycles on your machine for deploying your ledger.
The following steps assume that you have cycles on your machine
On your computer, make an empty folder and name it myToken, and open it in your favorite editor
Create a file inside the folder and name it dfx.jsonpaste the code below
Next, we are going to define some parameters for our token and prepare the script for deployment.
Create a new file named deploy.sh and paste the following code:
#!/usr/bin/env bash # Token settings TOKEN_NAME="FROGIE" TOKEN_SYMBOL="FRG" TRANSFER_FEE=10000 PRE_MINTED_TOKENS=100_000_000_00_000_000 FEATURE_FLAGS=true TRIGGER_THRESHOLD=2000 CYCLE_FOR_ARCHIVE_CREATION=10000000000000 NUM_OF_BLOCK_TO_ARCHIVE=1000 # Identities dfx identity use default DEFAULT=$(dfx identity get-principal) dfx identity new archive_controller dfx identity use archive_controller ARCHIVE_CONTROLLER=$(dfx identity get-principal) dfx identity new minter dfx identity use minter MINTER=$(dfx identity get-principal) # Switch back to the identity that contains cycles dfx identity use "<YOUR-IDENTITY>" # Create and deploy the token canister dfx canister create myToken --network ic dfx deploy myToken --network ic --argument"(variant {Init = record { token_symbol = \"${TOKEN_SYMBOL}\"; token_name = \"${TOKEN_NAME}\"; minting_account = record { owner = principal \"${MINTER}\" }; transfer_fee = ${TRANSFER_FEE}; metadata = vec {}; feature_flags = opt record{icrc2 = ${FEATURE_FLAGS}}; initial_balances = vec { record { record { owner = principal \"${DEFAULT}\"; }; ${PRE_MINTED_TOKENS}; }; }; archive_options = record { num_blocks_to_archive = ${NUM_OF_BLOCK_TO_ARCHIVE}; trigger_threshold = ${TRIGGER_THRESHOLD}; controller_id = principal \"${ARCHIVE_CONTROLLER}\"; cycles_for_archive_creation = opt ${CYCLE_FOR_ARCHIVE_CREATION}; };} })"
In this script, we define our token's name, symbol, transfer fee, and initial supply. Adjust these settings to match your tokenomics and token information details. For our token, we are premining 100 million tokens.
The script also specifies default settings for the token and sets up identities for minting and archiving.
note
Ensure you switch back to the identity that contains the cycles on your machine before running the commands below.
Once the file saved, run the command below in your terminal to deploy the token canister on the network:
./deploy.sh
If all the previous steps are successful, you should get a link in this format https://a4gq6-oaaaa-aaaab-qaa4q-cai.raw.icp0.io/?id=<TOKEN-CANISTER-ID> where TOKEN-CANISTER-ID is the id of your token ledger that was deployed.
All the premined tokens are now held by the principal address of the default identity. You can transfer these to an external wallet like plug to ease with the transfer process since using the command line to distribute the tokens is a little bit cumbersome.
Learn more about creating token canisters
The next step is to set up a marketing website for your project.
Select no to configure the local development emurator
Select yes to install the dependencies
Select yes to install juno's CLI tool. Juno CLI will help us to deploy our project in the satellite.
Navigate to the project folder myWebsite and open it in your favorite code editor. If every previous step is successfull, running npm run dev in the terminal will open the project in the browser and you should have something similar to this.
In the above code, we created a simple website to display the logo of our token, as well as the name,symbol and total supply of the token. There is also a button that allows the user to but our token from an exchange where it is listed.
Edit the code above to display the information of your token including the name, symbol, total supply, and logo.
Now that we connected our project to the satellite, we can compile and deploy the website.
npm run build
The above command compiles our website and outputs the compiled files in the dist folder
juno deploy
This will deploy our compiled files to the satellite that we connected linked our website to.
At this stage, if all the previous steps are successful, the command will output a link which is in this format https://<SATELLITE_ID>.icp0.io where SATELLITE_ID is the id of the satellite that we connected our project to.
tip
Running juno open in your terminal opens your project in your favorite browser.
Opening the link in the browser, you should have something like this below
In this section, we will look at how to list our newly created token on ICPSwap.
ICPSwap is a decentralized exchange that facilitates token trading and swapping by allowing tokens to be listed and liquidity pools to be created for different token pairs.
And because ICPSwap is a decentralized autonomous organization (DAO) controlled by the community members, you need to submit a proposal for your token to be added on the exchange. This proposal will be voted on by the community members. If the proposal passes, the token will be listed on this exchange.
We will create a proposal to add our token on ICPSwap in the following steps.
Click on te three dots in the right corner and select make proposal
Select MOTION as the proposal type
Add a descriptive title, something like "ADD FROGIE TO THE TOKEN LIST"
In the summary section,add all the details about your token forexample the token canister address, social media handles and any other information you feel will help the voter to understand more about your token
Once your have filled all the fields, click submit and the proposal will be submitted.
NOTE: You will be charged a fee of 50 ICS for this service, therefore ensure you have enough ICS balance before you perform this step.
The voting duration for proposals on the ICPSwap platform is typically three days. If a proposal passes during this voting period, your token will be listed on the exchange and will be tradable.
Once your token is available for trading, you can update the link on the Buy Frogie Now button to redirect the user to the exchange from where they can buy the token.
note
You can also use proposals.network as an alternative to submit a proposal to any SNS project.
If you have reached this step without any errors, congratulations, you have created your first meme coin project. ๐ฅณ
Now you can start marketing to attract more users and holders. Good luck! ๐ค
The first step to creating a successful meme coin is finding a unique topic that resonates with people. Your concept should be relatable, funny or nostalgic. Capture the essence of internet culture with a catchy name and logo that embodies the humor and appeal of your chosen meme.
Most successful meme coin projects hire specialized crypto influencer marketing teams with extensive networks. Partner with online personalities who like memes or crypto and have them talk about your coin to their followers.
In this article, we have covered everything you need to launch a successful memecoin project, from creating the token canister, to creating a marketing website using Juno and listing the token on ICPSwap.
This article is for educational purposes only and is not financial advice of any form. Do Your Own Research (DYOR) if you want to invest in memecoins.
๐
Stay connected with Juno by following us on Twitter to keep up with our latest updates.
And if you made it this far, weโd love to have you join the Juno community on Discord. ๐
Renaming a route in your web application is a common task, but itโs crucial to handle it correctly to avoid breaking links and negatively impacting your SEO. Redirecting the old route to the new one ensures a seamless user experience and maintains your site's search engine rankings.
In this blog post, weโll guide you through the steps to set up a redirection after renaming one of your pages.