Cakra's avatar
Level 5

Web ticketing Alternatives?

Hi there,

Let's say you're a solo freelancer running a web app development business and you already have 10 clients. How do you handle ticketing, such as bug reports, in a single app solution? I am trying to move away from using email.

I have no experience working on a software company, so I don't know if JIRA or Zendesk a bit overkill for my use case.

Any recommendations? Preferably if you have experience using the solutions.

Thanks in advance!

0 likes
8 replies
LaryAI's avatar
Level 58

Certainly! If you're looking to handle ticketing and bug reports in a single app solution, there are several tools and platforms that can help you manage this efficiently. Here are a few recommendations:

  1. Jira: A powerful tool for issue and project tracking. It allows you to create, manage, and track tickets easily. It also integrates well with other development tools.

  2. Trello: A more visual approach to ticketing with boards, lists, and cards. It's great for smaller teams and solo freelancers.

  3. GitHub Issues: If your projects are hosted on GitHub, you can use GitHub Issues to track bugs and feature requests. It's integrated directly with your codebase.

  4. Zendesk: A comprehensive customer service platform that includes ticketing, live chat, and knowledge base features.

  5. Freshdesk: Another customer support software that offers ticketing, automation, and collaboration features.

If you prefer to build a custom solution, you can create a simple ticketing system using a web framework like Laravel. Here’s a basic example of how you might set up a ticketing system in Laravel:

Step 1: Set Up Laravel Project

First, create a new Laravel project:

composer create-project --prefer-dist laravel/laravel ticketing-system

Step 2: Create Ticket Model and Migration

Generate a model and migration for tickets:

php artisan make:model Ticket -m

In the migration file, define the schema for the tickets table:

// database/migrations/xxxx_xx_xx_create_tickets_table.php
public function up()
{
    Schema::create('tickets', function (Blueprint $table) {
        $table->id();
        $table->string('title');
        $table->text('description');
        $table->enum('status', ['open', 'closed'])->default('open');
        $table->timestamps();
    });
}

Run the migration:

php artisan migrate

Step 3: Create Ticket Controller

Generate a controller for handling tickets:

php artisan make:controller TicketController

In the controller, add methods for creating, viewing, and updating tickets:

// app/Http/Controllers/TicketController.php
namespace App\Http\Controllers;

use App\Models\Ticket;
use Illuminate\Http\Request;

class TicketController extends Controller
{
    public function index()
    {
        $tickets = Ticket::all();
        return view('tickets.index', compact('tickets'));
    }

    public function create()
    {
        return view('tickets.create');
    }

    public function store(Request $request)
    {
        $request->validate([
            'title' => 'required',
            'description' => 'required',
        ]);

        Ticket::create($request->all());
        return redirect()->route('tickets.index');
    }

    public function show(Ticket $ticket)
    {
        return view('tickets.show', compact('ticket'));
    }

    public function edit(Ticket $ticket)
    {
        return view('tickets.edit', compact('ticket'));
    }

    public function update(Request $request, Ticket $ticket)
    {
        $request->validate([
            'title' => 'required',
            'description' => 'required',
        ]);

        $ticket->update($request->all());
        return redirect()->route('tickets.index');
    }
}

Step 4: Define Routes

Add routes for the ticketing system in web.php:

// routes/web.php
use App\Http\Controllers\TicketController;

Route::resource('tickets', TicketController::class);

Step 5: Create Views

Create Blade templates for listing, creating, and editing tickets. For example, the index view:

<!-- resources/views/tickets/index.blade.php -->
@extends('layouts.app')

@section('content')
    <h1>Tickets</h1>
    <a href="{{ route('tickets.create') }}">Create Ticket</a>
    <ul>
        @foreach ($tickets as $ticket)
            <li>
                <a href="{{ route('tickets.show', $ticket->id) }}">{{ $ticket->title }}</a>
                ({{ $ticket->status }})
            </li>
        @endforeach
    </ul>
@endsection

This is a basic example to get you started. You can expand it with more features like user authentication, email notifications, and more.

By using a dedicated ticketing system or building your own, you can streamline your workflow and keep all bug reports and feature requests organized in one place.

Cakra's avatar
Level 5

Sadly Larry I don't have time to develop my own ticketing system right now. 😥 .. thanks though!

Tray2's avatar
Tray2
Best Answer
Level 74

@Cakra In your case I would probably just use GitHub, and give the clients access to a private repo where they can report bugs.

2 likes
Cakra's avatar
Level 5

@Tray2 Thanks for the suggestion! Do you have experience working with clients who aren't very tech-savvy? I'm concerned that using GitHub might be overwhelming for them.

1 like
Tray2's avatar

@Cakra some of the ones I work with barely knows what system they are using.

Github is less complicated to raise an issue in than Jira.

1 like
rodrigo.pedra's avatar

@Cakra also the idea is to have a private repo with just a README.md that gets nicely rendered for instructions.

No code, disable PRs and discussions, leave just the issue tab. Works wonderfully well.

2 likes
Cakra's avatar
Level 5

Thanks guys, I will give it a go with Github 👍

Please or to participate in this conversation.