AmorStyle Distributed Sales Network NFTs

The next thing that I would like to introduce is a collection smart contracts that work together to handle settlement for a distributed sales network on the Theta blockchain. I’ve been calling it The AmorStyle Distributed Sales Network.

The idea is to incentivize more people to want to get involved in NFT projects. The incentive comes from NFT project creators providing a cut of the NFT mint. The NFT project creator offers that cut based on what they determine is reasonable for their project. The smart contract publishes that cut so that agents of the network can determine if talking about that project is worth the effort.

When a customer mints an NFT in the creator’s project, the smart contract carves up the mint funds as stated by the creator. Effectively, the NFT manages the cuts for the different agents and allows only that agent to claim the commissions.

As more creators learn that cool functionality can be enabled, or leveraged, using smart contracts, more of them will want to offer their services in an online fashion like this.

How does it all work?

First and foremost, this is a network of people that are all agreeing to work together in a semi-trustless way and the quality of what is offered is directly related to the amount of effort that different players offer to the network.

This network assumes there are Content Creators, Influencers, Technical people and Customers.

The Content Creators are the NFT projects. They offer up commissions to the agents and technical people to support their projects. They publish the minting cuts in order to incentivize the influencers to talk about their projects.

The Influencers are the Agents of the network. When you are a registered agent, any time someone mints using your Agent Id, you get the cut stated by the Content Creator. It’s handled by the smart contract.

The Technical people are those that provide websites and smart contract services for Content Creators. In order to talk to Smart Contracts, it needs to be handled by a website. And, because this is a network, would be better if multiple websites offer access to the content.

Can I see the code?

All the code for this project is currently published on this website. And, I’ve created the Gallery TestUI V1 project as a live demo.

Here are links to more info:

The Participant NFT

The Website NFT

The Agent NFT

The Gallery Project

Note that The Gallery is where I’m demonstrating this project. Please visit that link.

More Info

Even though this project is published and available for anyone to read or implement. I will be fielding questions in the TraderPunk discord. If you want to know the gritty details or get help as a Content Creator, please look me up.

Membership Demo newFunctionaliTee

Have you heard about Kalamazoo? If not, have I got a story for you!

For this demo project, I wrote a little JavaScript to go along with the two new NFTs that are now on the Theta blockchain.

And, even though the mint is unlimited, there will only be 42 winners awarded! It’s a first come, first served winning spree, so once you understand the concept, make sure you read how to win! (below at claim prize).

Kalamazoo

The main NFT is the Kalamazoo membership demo. This NFT simulates buying a club membership that costs a penny an hour. When a member signs up, there is a joining fee of $0.25 and the requirement that the purchaser funds at least 100 hours’ worth of membership time.

To do this, I wrote some ‘treasury’ code in the smart contract that allows the NFT owner to manage his Tfuel balance. Anyone can add Tfuel to an NFT, but only the owner of that NFT can withdraw the balance. At any time, anyone can query in order to determine how much tfuel balance is left. If there is a balance, the membership is considered active. If funds backing the token run dry, the owner of the NFT (or anyone else) can reactivate the NFT by placing funds on that account.

The fee associated with minting, reactivation and membership is credited to “The Titled” person (or account). The contract has the idea that there is a project owner and an IT owner. The project owner is considered the property owner, thus is credited the funds associated with the project. The IT owner is allowed to operate admin functionality in the smart contract on behalf of the property owner but can’t claim any funds.

Said differently, funds are managed by token Id. If you put 50 Tfuel on your token that will be used to pay your membership balance over time. But, if you transfer your token to someone else, they will now have ownership of that Tfuel balance which effectively gives them the hours that you just bought. In a way, the Token now has intrinsic value based on the number of hours of membership time it can buy.

Penny Oracle V1

I also created a contract that can be used to provide the current cost of a penny’s worth of Tfuel. The Kalamazoo contract uses the Penny Oracle V1 in order to determine the dollar price for membership.

This means that the value in the treasury buys more or less time as the price of Tfuel fluctuates. If tfuel goes to a dollar, the Kalamazoo membership will only charge a penny’s worth of tfuel per hour.

(* There is also a concept of claiming which cements the running calculations. If you want to learn the details, find me in the TraderPunks discord.)

Summary

If I were to spin this contract up again, there are some things that I would do differently. The most obvious thing is to write fewer functions in the smart contract.

Why? Well, Solidity and JavaScript allow for returning multiple values on a call. When loading a page for a website, each call adds to the load time. Thus, rather then call a bunch of small routines to get the ‘status’ of the NFT, it makes more sense to call a getStatus() type routine that returns everything at once.

So, how to you take a closer look?

Kalamazoo Membership

The best way to get involved is to visit the minting page:

Mint Page Here

Oh, and read the whitepaper.

Also, this is a demo, so cut it some slack. The best thing you can do is copy the project and put out something better. If not, help me make it better. 

Claim Prize

To win the prize, you have to follow a specific set of steps in order to be allowed to claim a winning position. These steps are designed to show you how to mint, withdraw your balance, reactivate and monitor your remaining hours.

Basically, when there are 15 hours left on your membership balance, the Claim Prize button will activate on the minting page. If there is still a position open, you will be assigned that position and the token will enter the winner’s circle.

The easiest way to get there is to mint, withdraw your balance and then reactivate with enough Tfuel to cover the $0.10 reactivation fee and another $0.15 to enable 15 hours’ worth of membership time. If you get that correct, the minting page will enable the Claim Prize button and you can ‘win’ if you want.

I Intend to Play newFunctionaliTee

Mint Intend and then Mint ToPlay

This is the third in a series of NFT demos that I have put together on the Theta Blockchain. This one builds upon the functionality of the previous two (Metadata hash and SendLock) to demonstrate two contracts working together to provide the solution.

The solution is to provide an on-chain technique by which a project creator can test the water to see if there is enough interest to launch a bigger project. For instance, if the project only really makes sense if there are at least 500 people that support it, this IntendToPlay NFT combination technique can gauge interest via the Intend NFT and then allow for the transfer to the ToPlay NFT once the minimum threshold is reached.

Note that this is to gauge the support of people, not coin and that a single contract could be used, but then, but then I wouldn’t have a multi-contract demo to provide.

So, minting the Intend NFT shows that you’re interested in the project. Once enough people have shown interest, minting of the ToPlay NFT will be automatically enabled for those that hold the Intend NFT.

And now, more details.

Intend NFT

The Intend NFT has limitations which become features. It is soulbound, meaning that it cannot be transferred to another account but, it can be burnt. It is intended to be burnt and replaced by the ToPlay NFT. The ToPlay NFT will only mint to addresses that hold an Intend NFT. And, during that mint, the ToPlay contract burns the Intend NFT held by the account minting.

There is no limit to the number of these NFTs that can be minted, just one per wallet.

Contract address: 0x4fc38d4ec30fe79c37990309ad6d2f488c4c12a1

Link to DappIntend file for minting.

ToPlay

The ToPlay contract is a fully functional 721 with SendLock functionality. It will only mint to addresses that hold a Intend NFT. And, during the mint, the Intend NFT is burnt and replaced by the ToPlay NFT. The minting process will not be enabled in the ToPlay contract until there have been 7 Intend NFTs minted.

There is a limit of 84 ToPlay NFTs.

Contract Address: 0x1d8898b814cf8f33e78c2a5eecd363e3e52df361

Link to DappToPlay file for minting.

Process

The cost of minting an Intend NFT is 5 Tfuel, cost of the ToPlay NFT is 4 Tfuel and the cost of SendLock protection is 1 Tfuel.

Step 1. Follow the link to the Intend NFT and mint.

Step 2. Tell a friend so at least 7 are minted

Step 3. Follow the link to the ToPlay NFT and mint.

Summary

I’d like to thank you for following along with these projects. The code used for the Metadata hash project has been used on all three demo projects. All code and data used to build each project is downloadable and verifiable. If you get the first demo, I’ll provide you the code that performs the verification.

I’d like to shout out to ThetaScan.io for providing the ‘dapp builder’ code which is used as the page that provide minting ability here.

SendLock newFunctionaliTee

Mint Link Below

Mint

As NFTs evolve to provide more services, the loss of that resource (or what that NFT grants access too) could cause significant emotional or even financial hardship.

This next Theta blockchain based NFT introduces a modification to the standard transfer design in 721 contracts that can be employed by NFT creators that will help protect the NFT resource in the case of the account being hacked.

When websites offer functionality that requires a ‘hot’ wallet (one that is always connected, or wallets where the user remains logged in for extended periods of time (like Metamask)) it opens up situations where family members or co-workers could find ways to access your resources.

Or, regardless of the wallet state, if someone else gets a copy of your private keys, they have complete access to your resources. If multiple people hold the same private keys, both people have full access to the resources of that wallet. If one is a hacker, chances are high you will lose everything you store in that wallet.

To help mitigate the damage done by less secure crypto wallets (and environments), the SendLock newFunctionaliTee contract allows the resource owner to register (or cash) the next transfer operation for the NFT before any damage can be done by a hacker.

The idea is like this:

  • Mint the NFT
  • Put the NFT in the wallet where you’ll use it
  • Perform a sendLockRegister() call giving it your backup wallet

Now, the next time a send operation is executed on this NFT, the contract will move it to the cashed location – NOT the requested location. And, once it’s been set, it can’t be unset. Thus, the hacker will not be able to override this functionality.

I encourage you to give it a try with this sample NFT. It cost 5 tfuel to mint, 3 tfuel to ‘flip’ the coin and 1 tfuel to register the SendLock wallet.

Here are some links to the SendLock NFT.

Contract Address: 0x738acc1ecf2339079c54a8bf8fc47aa3535bb65f

Minting Page

Whitepaper

Metadata Hash – newFunctionaliTee

Tada!

In celebration of my ’24 New Years goals, I’ve launched my first ‘official’ New Functionali-Tee smart contract on the Theta blockchain. I’m calling it the Metadata Hash NFT which shows a technique by which an NFT project author can demonstrate file authenticity while using a private server.
Mint Here!

Why?

Well, I’ve put some thought into the whole InterPlanetary File System (IPFS) idea and it doesn’t really make sense to store somethings forever. Imagine if the concert you went to in ’84 was an NFT and the ticket was an NFT that was issued and redeemed within a couple months. Would it make sense to have that digital garbage still hanging around 40 years later? Probably not. Seems like a waste of global resources.

But, if you were the chairman of the band’s fanclub you would probably want to save all that original data. If you do, the cost of ownership is local and most likely manageable.

The complication comes when proving you hold the original data.

Blockchains help with this. If you hash a file and then store that hash on the blockchain, it doesn’t matter who owns the file or where it is stored, if you have the original file you can prove it by generating the original hash.

This project takes advantage of this functionality by hashing all the files used to build this NFT and writing those hashes into a project file which is intern hashed. That final hash is stored on the blockchain.

If someone gets a copy of the root file (which holds all the hashes) they can prove that they have an original by hashing it. If the hash matches the blockchain value the file is unaltered. Then, all the hashes stored within that project file can be used to validate that all the other files (images, whitepaper, etc) are also unaltered.

This allows a level of verification that allows project creators to change servers and still prove they have the original files. This might allow an artist to sell his creation to a different company and that new owner can serve the project in a verifiable way.

In the end, the public cost is a hash on the blockchain.

The NewFunctionaliTee

Contract: 0x3af8d9df292ba083fb37d71df813f6d5ab0ad450

Whitepaper: https://amorstyle.com/nfts/metadatahash/whitepaper.pdf

Project: https://amorstyle.com/nfts/metadatahash/metadatahash.json

And, if you’d like to mint one of these NFTs, click HERE!

Example Sending coin via MetaMask

Here is an example of how to use Metamask to send some coin on the Theta network.

ChainId:
From:
BlockHeight:
Balance:

Amount of tfuel:
To:

Status:

Here is a downloadable ZIP file that contains the WordPress plugin code that integrates with Metamask.

This plugin installs just like any other WordPress plugin.

When you review the code, you’ll find a csendtobutton.js file that contains the class that handles the above shortcode.

Note that this is the next version of my tweb3mmexplore plugin. All the old functionality should continue to work as should this new ‘send’ functionality.

Lockable Digital Assets

Executive Summary:

Theta Labs should implement, at the base protocol layer of the blockchain, the ability to lock a resource with a predetermined release address. This will place resources out-of-reach for the general hacker. Implementing such a functionality will immediately raise the bar for how assets are secured in the industry.

Situation: 

The complexity of blockchain technology and the trusting gullibility of humans has created a windfall of illicit profits for hackers and scammers as they target access to people’s wallets. If a hacker gets access to a wallet, the current security protocols allow them access to all that wallet’s resources. These protocols are built around the principle – ‘not your keys, not your coins,’ yet it doesn’t provide protection if two people own the private keys at the same time.  

This proposal suggests a mitigation strategy that can help build more confidence for users of the Theta Blockchain by explicitly protecting resources before an attack. 

Consider: 

The staking functionality, as implemented on the Theta blockchain, introduces a new ‘locked’ state to the resources owned by the wallet. The resources are owned by the wallet but unable to be used. In order for those resources to be available for use, they must first be withdrawn and complete their ‘pending release’ timeout. 

The ‘locked’ state of the resource is what is important here. 

The complication is that anyone with access to the wallet can just unlock a resource and have their way with it. The first thing that the bad actor will do is transfer the resource to a wallet where only they own the private key. 

Mitigation: 

The core network code should provide a ‘locked resource’ functionality that mirrors staking, but has one key difference: It has a pre-registered ‘transfer to’ address that will receive the unlocked resources. This effectively means that after the pending period but before the coins are ‘returned’ to the owning wallet, they are transferred to the unlock address.  

By allowing this type of functionality if the owning account’s private keys are compromised, the hacker only has access to the non-locked resources of the wallet.  

This same protection can be extended to staked coins/tokens by simply requiring a ‘transfer to’ address when or before the coins are staked.  

Note that if a resource is locked, the ‘transfer too’ address cannot be changed, this prevents a bad actor from rerouting resources after a hack. 

By providing functionality like this, it would be a fiduciary duty to all entities on the network that manage funds for other people to lock some reasonable amount of the resources so that they are out of reach from this common type of security vulnerability. 

Extension:

If this type of functionality is available to the network, it would be logical to apply this towards other unique resources held in a wallet. In the wallet, rather than ‘wrapping’ or ‘staking’ they would ‘lock’ that resource. When in this state, wallet utilities should be able to see the resource, but a send operation would fail. And, again, the unlock operation would result in the predetermined send operation to the backup wallet.

This functionality may be extended to a smart contract and should also be considered for TNT-20 tokens. Specifically in light of the fact that MetaChain subsystems will also need to hold collateral for longer periods of time and any large treasury becomes a de facto target.

Comments from Discord:

The following are some comments from discord after the above idea was presented. The quotes are from discord, my comments are not.

“Certainly interesting. One side effect of this (if extended to staked tokens) would also be that staked tokens would be viewed as safer, possibly increasing the likelihood of one staking their tokens, therefore assisting in securing network.”

  • Actually, any locked resource.

“So the general idea is to add a second address while staking so that if the first address is compromised you can change the recipient of the tokens to the second address?”

  • The ‘release too’ address must be pre-registered.

“If this is possible it would really help many rest easier.”

  • Agreed.

“Liking the lockupabble (sp or is it even a word?) idea. Also, I think there are practices that I see encouraged in other projects including. Guidance for how many and for what purposes you should use multiple wallets. Multi-sig wallets(even 1 of 2 can be useful for couples). Always create a new address whenever receiving tokens. Only transacting against a node in your local network(no exposing your addresses and activity to 3rd parties). Using VPN to obfuscate your IP when interacting with wallets and explorers. Using multi-party transactions of equal value to obfuscate which tokens belong to who. The list goes on… Point being, we as a community need to take on a broader responsibility to educate new and old to the potentials of things going wrong and how to mitigate them and their effects.”

  • “That’s it! The value. This goes back to the segment I mentioned about the front end. How do we unlock that value besides just the red lettering. Example would be a video, maybe earn 1 or 2 tfuel for watching it. Incentivize them to watch the short security clip (ironic we’re dealing with Theta). To end the claim, I also believe there is more to be desired in that particular area as well.”
  • Incentivized learning is cool here too!

Tracking Addresses over the Theta Network

As tools are developed to watch the movement of coin over the Theta Network, it opens the doors of curiosity for those who want to know what’s going on before everyone knows what’s going on.

In this post, I’m going to show you how you can sleuth around using a couple public tools to get *some* information about the movement of funds, but not necessarily why the funds are moving. I would liken it to tracking an animal through the woods – you can see where the animal stepped, but not why they are on that path. Yet, if you’ve observed that animal enough, you may form an opinion regarding how it behaves, thus you can form a thesis that may hold up.

Let’s start with something that might be interesting – large Theta movements. To keep the level of interest up, let’s pick out a few recent large movements. We’re going to specifically look at the movements that Theta Ecosystem mentioned on twitter here.

I don’t know what service was used to get that info, but I’ve got tools to help me figure it out.

To start with, here is a graph showing the Theta transfers over the last 30 days as grouped by hour.

As you can see, there was an almost 5M Theta spike a few hours ago followed by a few smaller transfers.

And, because Theta is used as collateral for Validator and Guardian Nodes, if these transfers happened after the unstaking delay, they would show up in the chart that follows the ‘pending withdraw’ process.

Here is that chart covering (effectively) the same time period.

Seeing that the graph is suggesting that we’re just coming off of a withdraw peak, some of these coins may be associated with that. Well see clues if they are.

Normally, you wouldn’t have these charts and you’d simply use a whale tracking service, like ThetaPizza on Twitter, or an explorer like ThetaScan.io.

ThetaScan shows that there was a transfer, 1 day ago between Binance 1 and Binance 3 of about 4,918,428 Theta. The transaction hash is: 0xc54a5a7b71045b482a60976aa8301e2342f277084c3a84f8f4e9a3ef990afc5f.

Continuing down the ThetaScan list, we can gather all the transactions that happened “1 Days” ago. Here they are:

7) 17533256 Address to OKEX 980,392

6) 17532547 Binance 1 to Address 150,000

5) 17532521 Binance 1 to Address 980,382

4) 17532508 Binance 1 to Address 980,382

3) 17530324 Binance 1 to Binance 2 4,918,428

2) 17528266 Address to Binance 1 50,000

1) 17528169 Address to Address 50,000

(By the way, if the ThetaScan people see this, it would be nice to be able to sort via block numbers or age on their top transactions page. The default is volume.)

Because the information was sorted by volume rather than time, I’ve included the block number and ordered them in time – oldest transfer is on the bottom.

Now, some of the data isn’t interesting. Like, the Binance 1 to Binance 2 transfer. Binance is the biggest liquidity pool for Theta so we would expect them to be moving coin around and balancing their books. (See reference below for Theta daily transfer volume).

The three 980k Theta transfers seem more interesting. Let’s start with the oldest transfer, number 4 above (block 17532508). The receiving address is 0x924018442579fab39efa009ce6bf6051ce775a7a. If you investigate this address, you’ll see that it was created a day ago. It was seeded with 129 Tfuel from Gate.io, followed by another transfer from Binance 1 of 10 Theta. Then, there looks like a self-to-self trade of 1 Theta. All this happened before the ~1.1M Theta arrived from this block number 4 (above 17532508) and the later block number 6 (above 17532547).

Now let’s look at number 5 (above block 17532521) which had a related amount and was sandwiched between the previous two transactions. This transaction went from Binance 1 to 0x63591f92a4d167b40b5074222f1b759e61241ad6. This account has a little bit more history behind it. If you review it on the default explorer, and you toggle back to the first transaction, you’ll see it was created a year ago. That first 10 Theta came from Binance 1. And, if you look at the ‘outs’, they all go to the same address (0x67f9d949f3b06a1f45f5a0a2d7d8a82bccf3815f). If I hover my mouse over the OKEX label that I see in ThetaScan, I see this address. Thus, number 5 above went to an account that only outputs to OKEX.

So, this volume moved from Binance 1 to OKEX AND, if you look closely, you’ll see that block 7 (above 17533256) is the completion from the previous paragraph.

At this point, it looks like the “Binance to address” and “Address to OKEX” are just liquidity balancing by the exchanges. It would make sense for big exchanges to buffer coin on other exchanges in order to take advantage of arbitrage. It would also make sense in order to secure liquidity.

If the coin moved through an address that staked, I would be way more curious. It would be at that point that there is an obvious 3rd party involved. But I don’t see that there.

Summary

No need for the fancy ‘pending withdraw’ chart. If we wanted to track down that info, you could use the same tools but it doesn’t look related to these big transfers.

Would I see this as an obvious sale or purchase by an individual? No. More of standard exchange gathering/releasing of coin.

But, this onchain volume doesn’t seem to show up in the trading view volume that Binance reports. So, it was either held at Binance by OKEX or it’s the summary of lots of small volume.

Poking around, I can see that OKEX did $1Billion worth of Theta volume over the last week (See WorldCoinIndex Image below). This could suggest that the movement of coins is needed to support this OKEX volume (CoinMarketCap image of exchange percentages below). Note that OKEX was founded in China but serves over 200 countries – just not US.

Executive summary

The simplest solution is that this is load leveling between exchanges. Anything else would requires other data sources to help draw the conclusion.

Reference

Theta Daily Transfer Volume

Here is a chart showing the Theta sent over the last year by daily volume. The average per day is hovering around 4M.

Trading volume for Theta as reported by Binance. This is a day chart where I’ve placed my mouse at about 1M volume on a daily chart. The last few weeks have shown volumes much less than 1M.

From CoinMarketCap website. OKEX is accounting for 11% of the trading pairs for Theta right now.

TNS names not fully functional – yet

Ok, note the day that I posted this info. If you’re visiting from the future, I’m hoping that some of this info will be out of date. Let me know, and I’ll edit it out.

Since a couple hackathons ago, we’ve all been waiting for the Theta Name Service (TNS) to go live. The promise is that by linking your wallet address to a name, people can easily locate you in order to interact with your wallet. And, we all know that this work came out of ThetaBoard.io. Thus, you’ll want to keep that site on the radar.

And, I have but the code is still in alpha. That’s a proof-of-concept phase. Because TNS associations had been sold into the public, I was expecting that the code was in beta, which is the testing phase just before release. Thus, I’ll save you a lot of reading, I found that some things seem to work, but the end-to-end solution that I was looking for is not there.

Yet.

Here’s the backstory

Last month I had the idea that I would be creating this website. Knowing that people don’t work well with 40-digit numbers, the obvious solution would be a TNS name. So, I bought AmorStyle.Theta. Having seen TNS resolved names in the official Theta explorer, I set out to integrate this functionality into the website.

I knew that I wanted a dedicated account for any coin flow through this address, so I created another account through the official website. Naively, I figured I could just send the TNS I purchased to this new address and it would resolve. The TheteBoard.io website made it easy to do this, thus I sent it over. Then I tried to give the address to ThetaBoard.io so that it could make the assignment for me, and there was no way to do that. ThetaBoard.io would only act to set it to the account held by MetaMask.

I immediately search to see if MetaMask handles multiple accounts. It does. I created another account and that didn’t work. Turns out, there is an import functionality that I was able to work through which allowed me to assign my newly created wallet with MetaMask by using the keystore file.

After doing that, I had the account that was holding the TNS name registered with MetaMask so I connected that new account with ThetaBoard.io and the object was recognized so I could perform the assignment.

Feeling bold, I clicked the assign button. It notified me that there would be three MetaMask operations, which I worked through. After the first one came along, I clicked the completion notification from MetaMask to view the wallet activity in the explorer. After the third notification, my address in the explorer resolved to AmorStyle.Theta.

Success!

ThetaBoard.io didn’t seem to get that last completion and continued to spin as if it was working. After about 10 minutes, I refreshed the page to see that the assignment looked to have completed successfully.

The last thing that I needed to do was send some coin using this TNS name. Thus, opened my official Theta wallet, clicked to “Send” coin and placed AmorStyle.Theta in the “To” control. It wouldn’t resolve.

I looked over the ThetaBoard.io page to see if there was any place there that would resolve it for me.

Nothing.

Wrap up

Turns out that it’s just proof-of-concept code. Official TNS names should never have been sold into the public, they should have been ‘test’ names. In other words, this functionality should have been proven on the test net to make sure there was an end-to-end solution before rolling it out to the public. Particularly to someone like myself that would publicly critic it.

Going through this attempt at integrating a TNS name pointed out that I’m probably going to need a bit more information in order to really integrate this into any project. Specifically, a spec that shows how I need to interface to this service. I had thought that if I modified the “To” address in a Send Transaction to the network, the network would simply resolve that TNS name for me into the address. Well, that’s not the experience today.

What do I need to move forward? I need to see a roadmap outlining who and what the service really is, where the dependencies are and what happens if wallets don’t use the service.

TNS names are a cool idea, but still too early to use.

The base WordPress plugin development environment

In order for you to play along, it’s important to be able to review and run what I’ve created. This involves being able to build and test code, or at least the ability to install and run it.

This will involve some work on your part, but if you’ve done any development, you’ll have an idea with regards to what you need to do when you understand it’s purpose.

Because this project is centered around using WordPress – by means of a plugin – the project is relatively contained. As you probably already know, plugins are the way you introduce 3rd party code to the WordPress environment. This allows for basic enhancements to your website without creating dependencies to core or theme-based code. They can be installed, activated, deactivated and uninstalled. Theoretically leaving no footprint after install.

Another nice thing about WordPress code is that it’s compiled and interpreted at runtime within the browser. This means that the files we’re going to modify are text based.

Also, most functionality can be developed in a local development environment and once tested, uploaded to your website. It’s rare that you actually dynamically build on a live website. That’s just bad form, but sometimes required.

What I use

Get yourself a hosting service that allows you to install WordPress in its raw form. You’ll need the ability to upload files to the actual WordPress directory on your hosting server. You’ll also need phpMyAdmin access to the associated database. After you install, take note of the \wp-content\plugins directory. That is where the plugin(s) will go.

The local development environment requires installing XAMPP Control Panel in order to have your development system provide localhost services. Basically, your system will simulate the server environment so you can test and run you plugin. The XAMPP environment is tightly integrated with phpMyAdmin. Like with the live internet hosted website, here, you’ll also need to use phpMyAdmin to manage your database.

Once you have the basic tools to simulate a server, you’ll need WordPress. Download the latest version. Now you’re going to need to install WordPress in a directory that XAMPP is expecting. Basically, when you run localhost\X in your browser, the XAMPP simulated server environment is going to capture the command and ‘run’ the X directory.

For this project, I have a directory labeled AmorStyle in the .\xampp\htdocs directory. Thus, I can run “localhost\amorstyle” in the browser of my development computer and my WordPress website is rendered in that local browser. When this happens, the ‘code’ is interpreted and run – allowing for debugging opportunities.

At this point, do what you can to run the same look & feel between your local website and the live server hosted site.

Modifying code

Because the plugin files are html, php, js and cs, you can use Notepad to modify the contents.

I use Visual Studio. Having an integrated development environment is not needed, but hard to work without. There are features build into development tools that are considered essential when doing real development work.

Running a plugin

As you investigate installing plugins, most plugins are installed from within WordPress itself. The backend admin pages of WordPress allow you to search and find official plugins that have been approved by the WordPress organization. In other words, they screen the plugins so they meet a relatively high standard (documented, tested, reviewed, etc). What you get here will be a little more raw.

As the project develops, I’ll probably revisit this post or blog about changes to my process. Some technologies will involve additional tools (or simulators) which will be called out as appropriate.