How statistics are calculated
We count how many offers each candidate received and for what salary. For example, if a NFT developer with Express with a salary of $4,500 received 10 offers, then we would count him 10 times. If there were no offers, then he would not get into the statistics either.
The graph column is the total number of offers. This is not the number of vacancies, but an indicator of the level of demand. The more offers there are, the more companies try to hire such a specialist. 5k+ includes candidates with salaries >= $5,000 and < $5,500.
Median Salary Expectation – the weighted average of the market offer in the selected specialization, that is, the most frequent job offers for the selected specialization received by candidates. We do not count accepted or rejected offers.
Trending NFT tech & tools in 2024
NFT
NFT in crypto
An NFT (Non-Fungible Token) is a unique asset on a blockchain that signifies ownership of a digital piece of art, audio or video file. In contrast to mass-produced cryptocurrencies such as Bitcoin which can be traded interchangeably, NFTs represent unique units that cannot be passed off as identical products; you cannot exchange your Eminem NFT for another: it is non-fungible and unique. NFTs can act as registration certificates that create a digital chain of ownership, although proof of ownership alone does not equate to actual ownership.
As NFTs have sprung up and blossomed lately, they’ve started to radically shift the paradigm of what it means to own digital goods and the inherent value they carry. This has also given rise to hundreds of NFT marketplaces – essentially, websites that serve as digital storefronts to exhibit, trade, or buy NFTs. The technology behind them seems to have found a niche, and it’s got wide-ranging applications.
What are NFT marketplaces?
These are where NFTs can be stored, displayed, traded, and often even minted (ie, created). NFT marketplaces are to NFTs what Amazon or eBay are to goods.
To access and use these types of marketplaces, you will want to set up the following:
- A crypto wallet: you’ll need this to hold your crypto tokens, essentially your digital wallet, which must be compatible with a network on which the NFTs you want to buy/sell are held (below). For example, if you’re planning on buying, selling, or minting NFTs that are based on the blockchain network called Ethereum, then you will need to get a compatible Ethereum wallet such as MetaMask.
- How many coins are in your virtual wallet? If you want to purchase, publish, or mint an NFT, you’re going to have to put some money into your crypto wallet. Once again, it depends on what marketplace you’re planning to use – you’ll need to find out which cryptocurrencies they support.
- A user account: You need to create an account on the chosen market where NFTs are being bought and sold.
However, creating and listing an NFT on a marketplace generally means paying a blockchain network fee. The cost depends on the blockchain-native system you’re using. Ethereum enables the largest ecosystem of NFT dapps (decentralized applications) but has the highest fees.
NFT blockchain options
Note how the leader here is Ethereum: it is by far the most used system for purchasing selling and creating unique items that are solely held digitally. There are, however, other competitors on the market too: note the following:
- Binance Smart Chain
- Flow (by Dapper Labs)
- Tron
- EOS
- Solana
- Polkadot
- Tezos
- Algorand
- Cosmos
- WAX
How do these marketplaces work?
Signing up
Joining an NFT marketplace will look slightly different from site to site, but in general, you just need to create an account (or ‘sign in’ using one that you already have) or you might be able to just use a wallet that the NFT marketplace supports (or a new one you created for the purpose). You’ll be directed to a page where you Connect your wallet. Once your wallet is connected, you’ll be prompted to enter your wallet password (if it’s not auto-filled) to complete the process.
Buying an NFT
NFTs are bought outright for a certain price, through an auction, or (in some cases) presented to a specific owner and another bidder may make a bid in an attempt to acquire the asset at a lower price.
Selling an NFT
Selling is more technically complicated, especially for someone selling an NFT they’ve created themselves (an artwork, a soundtrack, a tweet, etc).
It means that you have to upload this individual digital asset to the platform and add a fixed price on it, or let the buyer bid for it during an auction.
Then the asset will be verified by the platform and can be listed for sale.
When the seller agrees with a bid, the marketplace executes the transfer from the buyer to the seller.
Minting an NFT
A potential first step toward minting an NFT might be Ethereum, which remains the most prominent system on which such tokens are used. You need an Ethereum wallet with native support of ERC-721 (the Ethereum token standard underpinning NFTs). One such wallet is MetaMask or also Trust Wallet or Coinbase Wallet. You also need to stash about $50-$100 of ethers in your wallet to cover transaction costs (the higher the network congestion, the steeper the fees).
After doing so, you can then begin using OpenSea, Rarible, or any other such platform. Usually, to open the dashboard where you can start minting, you’ll press a button in the top-right corner that reads ‘Create’ or similar.
Types of NFT marketplaces
Within this ecosystem, there are different types of marketplaces: the universal types, like OpenSea, are the most general, the art-focused ones are specialized, and then there are niche ones that list specific traits of non-fungible assets, such as in-game items, digital collectible cards, or virtual real estate.
Here are some popular universal and digital art-oriented NFT marketplaces currently available:
- OpenSea: The most established universal NFT marketplace is here at OpenSea, where you’ll find non-fungible tokens representing ownership of things as diverse as art, sporting collectibles, virtual worlds, trading cards, and domain names.
- Rarible: purchasing it enables replicated purchasing by others below it on the chain It’s an NFT marketplace where you or anyone else can make an NFT on one of three different blockchains, either Ethereum, Tezos, or Flow.
- SuperRare: A similar market is online at SuperRare, which specializes in digital art and works only with a handful of concept artists. Each work on sale is a unique one-of-one NFT.
- Nifty Gateway: Nifty is one of the biggest marketplaces for NFT objects. There you will find artwork from prominent artists, including the owner of the record for the most expensive NFT sold at $69 million – Beeple, and the electronic music producers Steve Aoki and deadmau5.
These are all things that could be swept up in the definition of an NFT. Still, for niche digital goods such as virtual world avatars or digital trading cards for games like fantasy football, there is a distinctly growing number of platforms vying for the attention of each digital market there – but the majority of retail NFT sales are still conducted on five platforms:
- NBA Top Shot: an NFT marketplace on Flow for buying and selling digital collectible cards of videos of memorable NBA ‘moments’.
- Axie Infinity: These are based around a digital game called Axie Infinity, in which people breed, battle, and trade cartoon pets called ‘Axies’, and in which some play professionally for a living.
- Sorare: tokens representing football players you can use in the fantasy football game Sorare.
- Decentraland features an in-house marketplace where players can buy and sell virtual land, in-game items such as wearables, and other digital experiences.
- Treasures: A website that lets users tokenize a tweet and then sell it as an NFT. For example, Twitter CEO Jack Dorsey sold his first tweet for $2.9 million.
Where is Express used?
API Creation Extravaganza
- Imagine painting with code. That's building RESTful APIs with Express. It's like wielding an artist's brush, crafting endpoints as masterful strokes on the canvas of the web.
Real-time Chat Riot
- With Express twinned with Socket.IO, you can whip up a buzzing bee hive of a chat app that’s livelier than a caffeine-fueled squirrel.
Middlewares Rodeo
- Yee-haw! Saddle up your app with middleware layers. Authentication, body-parsing, logging - it's the rodeo of the server-side world where Express lassos 'em all.
Custom Web Server BBQ
- Ever wanted to grill your own server? Throw some Node.js on the flame, spice it with Express, and voilà! A sizzling, custom web server cooked to perfection.
Express Alternatives
Koa
Koa, created by the original team behind Express, offers a robust foundation for web applications. It leverages async functions for a simpler and more powerful middleware framework.
Example:
const Koa = require('koa');
const app = new Koa();
app.use(async ctx => {
ctx.body = 'Hello World';
});
app.listen(3000);
Pros:
- Lighter, more modular structure
- Improved error handling through try/catch
- Enables use of ES2017 async functions
Cons:
- Smaller community, fewer resources
- Relatively new, less mature than Express
- Requires understanding of modern JavaScript features
Hapi
Hapi is a rich framework for building applications and services, known for its powerful plugin system which allows developers to extend its capabilities.
Example:
const Hapi = require('@hapi/hapi');
const init = async () => {
const server = Hapi.server({
port: 3000,
host: 'localhost'
});
server.route({
method: 'GET',
path: '/',
handler: (request, h) => {
return 'Hello World';
}
});
await server.start();
console.log('Server running on %s', server.info.uri);
};
init();
Pros:
- Extensive plugin ecosystem
- Built-in input validation
- Rich configuration options
Cons:
- Steeper learning curve
- Bulky for smaller projects
- Can feel overly structured for simple tasks
Fastify
Fastify is a fast and low-overhead web framework, highly focused on providing good performance through its efficient request/response lifecycle.
Example:
const fastify = require('fastify')({
logger: true
});
fastify.get('/', async (request, reply) => {
return { hello: 'world' }
});
fastify.listen(3000, err => {
if (err) throw err;
console.log(`server listening on ${fastify.server.address().port}`)
});
Pros:
- Emphasis on speed and performance
- Schema-based validation built-in
- High extensibility with hooks, plugins, and decorators
Cons:
- Less mainstream than Express
- Not as many middleware options natively
- APIs can be too low-level for beginners
Quick Facts about Express
The Birth of Express: Speedy Delivery in Node.js Land!
Imagine hopping on the back of a supercharged JavaScript cheetah in 2010; that's when TJ Holowaychuk decided we all deserved to write web apps with more pep in our step! Express.js shot out like a rocket, making Node.js web development a breezy ride. It's the Sinatra of Node, but you know, without the singing and old-timey microphone.
Version Fun: Playing the Numbers Game
Buckle up! The Express version timeline is like a wild rollercoaster, without the annoying loops. Starting with 0.x released in the wild-west days of Node.js, it hustled to 4.x, promising unicorns and rainbows... Okay, not really, but it did bring us a more modular structure that had developers doing the happy dance. It's like your grandma's lasagna recipe: it just keeps getting better with time.
The Middleware Melody: A Symphony of Functions
Want to hear a secret? The magic of Express lies in its middleware, which is like a fancy assembly line for requests, where each worker is a piece of code that adds a sprinkle of functionality. One piece is logging, another could be parsing, and before you know it, your request is ready to serve – chef's kiss!
app.use('/user/:id', function(req, res, next) {
console.log('Request Type:', req.method);
next();
});
What is the difference between Junior, Middle, Senior and Expert Express developer?
Seniority Name | Years of Experience | Average Salary (USD/year) | Responsibilities & Activities | Quality-Wise |
---|---|---|---|---|
Junior | 0-2 | 50,000 - 70,000 |
| Requires guidance |
Middle | 2-5 | 70,000 - 100,000 |
| Work independently |
Senior | 5-10 | 100,000 - 140,000 |
| High-quality deliverables |
Expert/Team Lead | 10+ | 140,000 - 180,000 |
| Expert level output |
Top 10 Express Related Tech
JavaScript (Node.js)
Oh, the bedrock of Express—the illustrious JavaScript running on Node.js! It’s like the peanut butter to your jelly; without it, you can’t whip up anything in Express. Node.js allows JavaScript to break free from the browser and take a joyride on the server side. Make sure you're cozy with asynchronous programming; Promises, callbacks, and async/await are your new BFFs.
// An async function in JavaScript
async function getTheGoods() {
let result = await fetch('https://api.example.com/data');
let data = await result.json();
console.log(data);
}
getTheGoods();
Express.js Framework
The star of the show, naturally! Express.js is the minimalist web framework that doesn't boss you around. It's more like a Swiss Army knife for building web applications—it gives you the tools, but it’s up to you to use them wisely. It handles routing, middleware, and it’s got more options than a buffet. Dig in!
const express = require('express');
const app = express();
// A simple route in Express
app.get('/', (req, res) => res.send('Hello World!'));
app.listen(3000, () => console.log('App listening on port 3000!'));
MongoDB & Mongoose
Welcome to the no-SQL-zone! It’s MongoDB paired with the ODM (Object Document Mapper) charm of Mongoose. Together, they’re like Batman and Robin for your database needs. With MongoDB’s flexible schema and Mongoose’s ability to translate back and forth between objects in code and the representation of those objects in MongoDB, you're set for an adventure.
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/my_database');
// Simple Mongoose schema
const Cat = mongoose.model('Cat', { name: String });
const kitty = new Cat({ name: 'Zildjian' });
kitty.save().then(() => console.log('meow'));
RESTful API Design
Designing APIs like you’re drafting up blueprints for a spaceship. Creating endpoints should be like writing poetry, not a tax return. HTTP methods (GET, POST, PUT, DELETE) are your verbs, and URIs are the nouns. Keep it intuitive, predictable, and REST assured, your API users will thank you for making their lives easier.
// Express.js REST API example
app.get('/api/v1/resources', (req, res) => {
// Get list of resources
});
app.post('/api/v1/resources', (req, res) => {
// Create a new resource
});
Testing with Mocha & Chai
Your code needs a safety net, a buddy that yells "I got you!"—that's Mocha with a dash of Chai. Writing tests is less about ensuring you don't fall, and more about knowing you can fly through your code with style. Mocha sets the stage and Chai brings the flavor with BDD/TDD assertion libraries that will make testing a treat, not a chore.
// Example of a test with Mocha and Chai
const expect = require('chai').expect;
describe('Array', () => {
it('should start empty', () => {
const arr = [];
expect(arr).to.be.empty;
});
});
Authentication with Passport.js
Guarding the realm from unwelcome visitors is Passport.js, your trusty gatekeeper. It’s like a bouncer for your web app, checking IDs and granting access with a nod. Local, Twitter, Facebook, or Google—just pick an identity strategy, and Passport will handle the nitty-gritty of user authentication.
const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;
passport.use(new LocalStrategy(
(username, password, done) => {
Users.findOne({ username: username }, (err, user) => {
// Authentication logic here
});
}
));
Real-time Communication with Socket.IO
When your app needs to chat in real time, Socket.IO is like the chatty taxi driver who always has one more story. It keeps the conversation flowing smoothly between client and server, with WebSockets under the hood for those clients with a need for speed.
const io = require('socket.io')(httpServer);
io.on('connection', (socket) => {
console.log('a user connected');
socket.on('disconnect', () => {
console.log('user disconnected');
});
});
Containerization with Docker
Think of Docker as Tupperware for your app. It keeps everything contained and fresh, regardless of where you take it. No more "works on my machine" excuses—you can define your app's environment down to the last semicolon and share it with others, knowing it won’t go bad.
# Example Dockerfile content for Node.js app
FROM node:14
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD [ "node", "server.js" ]
Logging with Morgan & Winston
Logs are the breadcrumbs you leave behind for your future self. Morgan tells you who came by, and Winston records their stories. With these two on duty, your debugging sessions will feel like watching reality TV, you’ll follow the drama as it unfolds, and figure out who’s causing the mess.
const morgan = require('morgan');
const winston = require('winston');
app.use(morgan('combined')); // For HTTP request logging
// Winston for more substantial logging needs
const logger = winston.createLogger({
// Winston configuration
});
Environment Management with dotenv
Secrets, secrets are no fun unless you share with .env! Dotenv is your app's diary, holding all the little secrets it doesn't want to shout to the world. API keys, database passwords—dotenv keeps them safe and sound, tucked away in environment variables. Just remember, don’t commit it. 😅
require('dotenv').config();
// Using an environment variable
const dbPassword = process.env.DB_PASSWORD;