টু-ডু লিস্ট অ্যাপ

একটি টু-ডু লিস্ট অ্যাপ সি#-এ তৈরি করা একটি চমৎকার প্র্যাকটিস প্রজেক্ট, যা আপনার ASP.NET এবং MVC প্যাটার্নের দক্ষতা বাড়াতে সাহায্য করবে। এই অ্যাপে ব্যবহারকারীরা তাদের দৈনন্দিন কাজগুলো যুক্ত, আপডেট, এবং মুছতে পারবে। এছাড়াও কাজগুলোকে কমপ্লিট বা ইনকমপ্লিট হিসেবে চিহ্নিত করতে পারবে।


প্রজেক্টের ফিচারসমূহ

  1. টাস্ক যুক্ত করা: নতুন কাজ বা টাস্ক যুক্ত করা।
  2. টাস্ক আপডেট করা: টাস্কের তথ্য পরিবর্তন করা।
  3. টাস্ক মুছে ফেলা: টাস্ক মুছে ফেলা।
  4. স্ট্যাটাস পরিবর্তন: টাস্ক কমপ্লিট এবং ইনকমপ্লিট হিসেবে চিহ্নিত করা।
  5. টাস্ক ফিল্টারিং: সম্পূর্ণ বা অসম্পূর্ণ টাস্কগুলো আলাদা ভাবে দেখতে সক্ষম।

টেকনোলজি স্ট্যাক

  • ASP.NET Core MVC: অ্যাপ্লিকেশন তৈরির জন্য।
  • Entity Framework Core: ডেটাবেস ম্যানেজমেন্টের জন্য।
  • SQLite বা SQL Server: ডেটাবেস সংরক্ষণের জন্য।
  • Bootstrap বা CSS: ফ্রন্ট-এন্ড স্টাইলিংয়ের জন্য।

টু-ডু লিস্ট অ্যাপের ধাপসমূহ

১. নতুন ASP.NET Core প্রজেক্ট তৈরি করুন

Visual Studio বা .NET CLI ব্যবহার করে ASP.NET Core MVC প্রজেক্ট তৈরি করুন:

dotnet new mvc -o TodoApp

২. মডেল তৈরি করুন

প্রজেক্টের Models ফোল্ডারে TodoItem নামে একটি ক্লাস তৈরি করুন, যেখানে প্রতিটি টাস্কের জন্য প্রয়োজনীয় প্রোপার্টি থাকবে।

public class TodoItem
{
    public int Id { get; set; }
    public string Title { get; set; }
    public bool IsCompleted { get; set; }
    public DateTime CreatedAt { get; set; } = DateTime.Now;
}

৩. DbContext সেটআপ করুন

TodoContext নামে একটি DbContext ক্লাস তৈরি করুন, যা TodoItem মডেলের সাথে ডেটাবেস কানেক্ট করবে।

using Microsoft.EntityFrameworkCore;

public class TodoContext : DbContext
{
    public TodoContext(DbContextOptions<TodoContext> options) : base(options) { }
    
    public DbSet<TodoItem> TodoItems { get; set; }
}

Startup.cs ফাইলে ConfigureServices মেথডে DbContext যুক্ত করুন:

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<TodoContext>(options => 
        options.UseSqlite("Data Source=todo.db"));
    services.AddControllersWithViews();
}

৪. মাইগ্রেশন এবং ডেটাবেস তৈরি

dotnet ef migrations add InitialCreate
dotnet ef database update

৫. কন্ট্রোলার তৈরি করুন

TodoController নামে একটি কন্ট্রোলার তৈরি করুন, যা CRUD অপারেশন পরিচালনা করবে।

using Microsoft.AspNetCore.Mvc;
using System.Linq;
using System.Threading.Tasks;

public class TodoController : Controller
{
    private readonly TodoContext _context;

    public TodoController(TodoContext context)
    {
        _context = context;
    }

    public async Task<IActionResult> Index()
    {
        var todos = await _context.TodoItems.ToListAsync();
        return View(todos);
    }

    [HttpPost]
    public async Task<IActionResult> Create(TodoItem todo)
    {
        if (ModelState.IsValid)
        {
            _context.Add(todo);
            await _context.SaveChangesAsync();
            return RedirectToAction(nameof(Index));
        }
        return View(todo);
    }

    public async Task<IActionResult> Edit(int id)
    {
        var todo = await _context.TodoItems.FindAsync(id);
        if (todo == null)
        {
            return NotFound();
        }
        return View(todo);
    }

    [HttpPost]
    public async Task<IActionResult> Edit(TodoItem todo)
    {
        if (ModelState.IsValid)
        {
            _context.Update(todo);
            await _context.SaveChangesAsync();
            return RedirectToAction(nameof(Index));
        }
        return View(todo);
    }

    public async Task<IActionResult> Delete(int id)
    {
        var todo = await _context.TodoItems.FindAsync(id);
        if (todo != null)
        {
            _context.TodoItems.Remove(todo);
            await _context.SaveChangesAsync();
        }
        return RedirectToAction(nameof(Index));
    }

    [HttpPost]
    public async Task<IActionResult> ToggleComplete(int id)
    {
        var todo = await _context.TodoItems.FindAsync(id);
        if (todo != null)
        {
            todo.IsCompleted = !todo.IsCompleted;
            await _context.SaveChangesAsync();
        }
        return RedirectToAction(nameof(Index));
    }
}

৬. ভিউ তৈরি করুন

Views/Todo/Index.cshtml ফাইলে টু-ডু লিস্ট প্রদর্শনের জন্য HTML কোড লিখুন।

@model IEnumerable<TodoItem>

<h2>Todo List</h2>

<form asp-action="Create" method="post">
    <input type="text" name="Title" placeholder="Enter new task" required />
    <button type="submit">Add Task</button>
</form>

<table>
    <thead>
        <tr>
            <th>Task</th>
            <th>Status</th>
            <th>Actions</th>
        </tr>
    </thead>
    <tbody>
        @foreach (var todo in Model)
        {
            <tr>
                <td>@todo.Title</td>
                <td>
                    <form asp-action="ToggleComplete" method="post">
                        <input type="hidden" name="id" value="@todo.Id" />
                        <button type="submit">@((todo.IsCompleted ? "Completed" : "Incomplete"))</button>
                    </form>
                </td>
                <td>
                    <a asp-action="Edit" asp-route-id="@todo.Id">Edit</a> |
                    <a asp-action="Delete" asp-route-id="@todo.Id">Delete</a>
                </td>
            </tr>
        }
    </tbody>
</table>

৭. স্টাইলিং (ঐচ্ছিক)

Bootstrap ব্যবহার করে CSS স্টাইল যোগ করুন, যাতে ইন্টারফেস আরও আকর্ষণীয় দেখায়।

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">

৮. অ্যাপ রান করুন

প্রজেক্ট রান করতে dotnet run কমান্ডটি ব্যবহার করুন অথবা Visual Studio থেকে Run ক্লিক করুন। তারপর ব্রাউজারে https://localhost:5001/Todo এ যান।


ফিচার এক্সটেনশন

অ্যাপটি আরও উন্নত করতে কিছু অতিরিক্ত ফিচার যোগ করতে পারেন:

  • সার্চ ফিল্টার: কাজগুলোর মধ্যে অনুসন্ধান করার ফিচার।
  • টাস্কের ডেডলাইন: প্রতিটি টাস্কের জন্য ডেডলাইন যুক্ত করা।
  • ইমেইল রিমাইন্ডার: নির্দিষ্ট সময় পর পর রিমাইন্ডার সিস্টেম।
  • প্রায়োরিটি লেভেল: টাস্কের প্রায়োরিটি লেভেল নির্ধারণ।

এই প্রোজেক্টটি ASP.NET Core এর MVC প্যাটার্ন, Entity Framework এবং ডিপেনডেন্সি ইনজেকশনের ব্যবহার শেখার জন্য চমৎকার একটি প্র্যাকটিস।

Content added By

আরও দেখুন...

Promotion