A modern web portal for managing student assignments and submissions, sharing resources, and streamlining communication between teachers and students. The application is designed to be fully self-contained, requiring no internet connection to run, making it ideal for offline or LAN environments.
- Role-Based Access Control: Separate dashboards and functionalities for Teachers and Students.
- Comprehensive User Management: Teachers can create, edit, and manage student accounts, including bulk import from a CSV file.
- Assignment Management: Teachers can create, update, and manage assignments, specifying details like subject, chapter, and topic.
- Resource Sharing: Teachers can upload and share public resources (e.g., notes, links) accessible to all students.
- Student Submissions: Students can view assignments, create files (e.g.,
.txt,.java,.sql), and submit their work. - Submission Tracking: A detailed assignment view for teachers shows a real-time report of which students have and have not submitted their work.
- Modern UI: A clean and responsive user interface built with Tailwind CSS.
- Offline First: All dependencies are served locally, ensuring the application is fully functional without an internet connection.
- Backend: ASP.NET 9 Razor Pages
- Database: Entity Framework Core with SQLite
- Authentication: ASP.NET Core Identity
- Frontend Styling: Tailwind CSS
- Frontend Dependencies: pnpm for managing local, offline-first libraries (jQuery, Prism.js, etc.)
Follow these instructions to get a copy of the project up and running on your local machine for development and testing purposes.
- .NET 9 SDK
- Node.js (which includes npm)
- pnpm (recommended package manager)
-
Clone the repository:
git clone https://github.com/ashishbhoi/student-assignment-portal.git cd StudentClassworkPortal -
Configure Teacher Credentials: Set up the initial teacher account by providing credentials in
appsettings.Development.json.{ "AppSettings": { "TeacherUsername": "teacheradmin", "TeacherPassword": "P@ssw0rd" } } -
Install Dependencies: This single command installs all frontend (
pnpm) and backend (dotnet) dependencies. Thepostinstallscript will automatically copy necessary libraries fromnode_modulestowwwroot/lib.pnpm install dotnet restore
-
Build Frontend Assets: Compile the Tailwind CSS file. For development, you can use the
watchcommand to automatically rebuild on changes.pnpm run build # For a single build pnpm run watch # To watch for changes
-
Apply Database Migrations: This will create the
app.dbSQLite database file and apply the latest schema.dotnet ef database update
-
Run the Application:
dotnet run
The application will be available at https://localhost:5001 or a similar port.
To deploy the application to a production environment on Windows, download the latest IIS_Release.zip from the
GitHub Releases page.
- Windows Server with IIS (Internet Information Services) enabled.
- .NET 9 Hosting Bundle installed on the server. This is a critical step that installs the necessary runtimes for IIS to host ASP.NET Core applications.
-
Download and Extract: Download the
IIS_Release.zipfile from the latest release and extract its contents to a folder on the server (e.g.,C:\inetpub\wwwroot\StudentPortal). -
Create Application Pool:
- Open IIS Manager.
- Go to Application Pools and click Add Application Pool....
- Name it (e.g.,
StudentPortalPool) and set the .NET CLR version to No Managed Code. This is required for self-contained ASP.NET Core applications. - Click OK.
-
Create the Website:
- In IIS Manager, right-click on the Sites folder and select Add Website....
- Site name: Enter a descriptive name (e.g.,
Student Classwork Portal). - Application pool: Select the
StudentPortalPoolyou just created. - Physical path: Browse to the folder where you extracted the release files.
- Binding: Configure the desired hostname and port (e.g., Port 80 for standard HTTP).
- Click OK.
-
Configure
appsettings.json:- In the deployment folder, open the
appsettings.jsonfile with a text editor. - Set the
TeacherUsernameandTeacherPasswordfor the initial administrator account. This is a critical step for the first run.
{ "AppSettings": { "TeacherUsername": "teacherusername", "TeacherPassword": "A_Very_Strong_Password!@#" } } - In the deployment folder, open the
-
Start the Website: The website should start automatically. You can now browse to the configured address to access the portal. The database (
app.db) will be created automatically in the deployment folder on the first visit.
Contributions, issues, and feature requests are welcome! Feel free to check the issues page.
This project is licensed under the GPL-3.0-only License.