DEV Community

Alex Spinov
Alex Spinov

Posted on

Jira Has a Free Project Management Platform — Track Issues With the Industry Standard Tool

Jira Has a Free Project Management Platform — Track Issues With the Industry Standard Tool

Love it or hate it, Jira is everywhere. Most enterprise engineering teams run on it. And the free tier supports up to 10 users with full features.

Free Tier

  • Up to 10 users
  • Unlimited projects
  • Scrum and Kanban boards
  • Backlog management
  • Roadmaps (basic)
  • 2GB file storage
  • REST API access
  • Automation (100 rules/month)

REST API: Create an Issue

const response = await fetch(
  'https://your-domain.atlassian.net/rest/api/3/issue',
  {
    method: 'POST',
    headers: {
      'Authorization': `Basic ${Buffer.from('email:api-token').toString('base64')}`,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      fields: {
        project: { key: 'PROJ' },
        summary: 'API Gateway returns 500 on /users endpoint',
        description: {
          type: 'doc', version: 1,
          content: [{
            type: 'paragraph',
            content: [{ type: 'text', text: 'Steps to reproduce: ...' }]
          }]
        },
        issuetype: { name: 'Bug' },
        priority: { name: 'High' },
        assignee: { accountId: 'user-account-id' },
        labels: ['production', 'api']
      }
    })
  }
);

const issue = await response.json();
console.log('Created:', issue.key); // PROJ-123
Enter fullscreen mode Exit fullscreen mode

Search with JQL

// Jira Query Language — powerful search
const jql = 'project = PROJ AND status = "In Progress" AND assignee = currentUser() ORDER BY priority DESC';

const results = await fetch(
  `https://your-domain.atlassian.net/rest/api/3/search?jql=${encodeURIComponent(jql)}&maxResults=10`,
  {
    headers: {
      'Authorization': `Basic ${Buffer.from('email:api-token').toString('base64')}`
    }
  }
);

const { issues } = await results.json();
issues.forEach(issue => {
  console.log(`${issue.key}: ${issue.fields.summary} [${issue.fields.status.name}]`);
});
Enter fullscreen mode Exit fullscreen mode

Webhooks

// Register a webhook
await fetch('https://your-domain.atlassian.net/rest/api/3/webhook', {
  method: 'POST',
  headers: {
    'Authorization': `Basic ${Buffer.from('email:api-token').toString('base64')}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    url: 'https://yourserver.com/webhooks/jira',
    events: ['jira:issue_created', 'jira:issue_updated'],
    filters: { 'issue-related-events-section': 'project = PROJ' }
  })
});

// Handle webhook
app.post('/webhooks/jira', (req, res) => {
  const { webhookEvent, issue } = req.body;
  console.log(`${webhookEvent}: ${issue.key}${issue.fields.summary}`);
  res.sendStatus(200);
});
Enter fullscreen mode Exit fullscreen mode

Automation Rules

Built-in automation without code:

WHEN: Issue transitions to "Done"
THEN: Add comment "Resolved by {{assignee}}"
AND: Send Slack message to #releases
AND: Update linked Confluence page
Enter fullscreen mode Exit fullscreen mode

The Bottom Line

Jira's free tier with 10 users is enough for small teams who need a battle-tested issue tracker. The REST API and JQL make it programmable for any workflow.


Need to extract project data, track competitor development activity, or build automated reporting pipelines? I create custom solutions.

📧 Email me: spinov001@gmail.com
🔧 My tools: Apify Store

Top comments (0)