A Java Swing desktop course storefront with admin and user flows, built as an AIUB course project.
Overview · Highlights · Preview · Architecture · Tech Stack · Getting Started · Structure · Author
CodingVibes is a desktop storefront for programming courses, written in plain Java Swing. A visitor picks the Admin or User entry on the landing page, signs up or logs in, browses language courses, fills a cart and walks through a payment screen. Admins get a separate dashboard to add and remove users and add developers.
It is an academic project made for a university course to practise object-oriented design and event-driven GUI programming. Everything commercial is a simulation: there is no real payment, no database and no network access. Accounts live in plain-text files, so it is not a model of secure authentication.
| Two entry roles Landing page splits into Admin and User login, plus a user sign-up form. |
Course catalogue Two catalogue pages and a detail window per language (Java, Python, C++, Kotlin, Go and more). |
Shopping cart Add and remove courses; the cart is held in memory for the session. |
| Simulated payments Card, bKash, Nagad, Rocket and generic mobile payment screens ending in a confirmation page. |
Admin dashboard Add users, remove users, view registered users and add developers. |
Content pages About us, vision and mission, team, blog, reviews, contact and special services. |
| Flat-file storage User and admin records are appended to and read from Data/*.txt with java.io. |
Plain Swing, no dependencies Only the JDK is needed: Swing, AWT and the standard library. |
About 7.8k lines One class per screen across 54 Java files, split into main and interfaces. |
![]() User login |
![]() Main menu |
![]() Course catalogue |
![]() Course details |
![]() Shopping cart |
![]() Payment options (simulated) |
![]() Admin dashboard |
![]() User management |
Each screen is a JFrame in the SourceFiles package. Screens open each other directly. The only shared state is a static cart list and the text files under Data/.
flowchart LR
Start["Start.java"] --> Page["Page (landing)"]
Page --> UL["UserLogin / UserSignup"]
Page --> AL["AdminLogin"]
UL --> Menu["HomePage (main menu)"]
Menu --> C1["Courses1 / Courses2"]
C1 --> Det["Language detail screens"]
Det --> Cart["CartPage (static list)"]
Cart --> Pay["PaymentOptions"]
Pay --> P1["Card / bKash / Nagad / Rocket / Mobile"]
P1 --> Fin["FinishingPage"]
AL --> Dash["AdminDashboard"]
Dash --> Add["AddingNewUser / AddingDeveloper"]
Dash --> Rem["RemoveUserPage / UserInfoPage"]
UL <--> Files[("Data/User_Data.txt")]
Add --> Files
Rem <--> Files
AL <--> Admin[("Data/Admin_Data.txt")]
Add --> Admin
| Layer | Technologies | Purpose |
|---|---|---|
| Language | Java (JDK 17 or later recommended) | Application logic and OOP structure |
| GUI | Swing and AWT | Windows, tables, buttons, event listeners |
| Storage | java.io text files |
User and admin records under Data/ |
| Assets | PNG and JPG in assets/ |
Backgrounds, logos and language icons |
| Tooling | Any Java IDE | IntelliJ IDEA, Eclipse or NetBeans |
Prerequisites: a JDK (17 or later is recommended) and an IDE or the javac command line.
git clone https://github.com/Saji-d/codingvibes-java-gui.git
cd codingvibes-java-guiThe screens read images and data files with relative paths, so run from a working directory that contains assets/ and a Data/ folder with User_Data.txt and Admin_Data.txt. The Data/ folder is not tracked in this repository, so create it and add an admin record before using the admin login. Then open the project in your IDE and run the entry point:
src/main/Start.java (opens the Page landing screen)
The public class in
Start.javais declared asstartin lower case. If your compiler rejects the file name mismatch, rename the class toStart.
Payments, the cart, reviews, contact details and user data are simulations for learning only.
Source in src/ (one class per screen), with images in assets/ and docs/.
codingvibes-java-gui/
├── assets/ backgrounds, logos, language icons, banner
├── docs/ preview image and README screenshots
├── screenshots/ original full-size screenshots
├── src/
│ ├── interfaces/ login, sign-up and add-user form interfaces
│ └── main/ one class per screen (courses, cart, payments, admin)
├── LICENSE
└── README.md
Sajidur Rahman Sajid: Full-Stack Developer and AI engineer from Dhaka.
BSc in CSE at American International University-Bangladesh (AIUB).
A learning project, shared as it was built. Released under the MIT licence.








