# PROJECT OVERVIEW
- This project is a comprehensive web application designed for Danish primary school students and teachers.
- Students can track their progress in courses, access an AI-powered chat for help (both via chat, voice and files), view schedules and achievements, and more.
- Teachers can upload course materials, manage schedules, and monitor student performance.
Project Idea:
- This project is a comprehensive web application designed for Danish primary school students and teachers.
- Students can track their progress in courses, access an AI-powered chat for help (both via chat, voice and files), view schedules and achievements, and more.
- Teachers can upload course materials, manage schedules, and monitor student performance.
- To begin with the project, we will focus on mathematics, physics, and chemistry (Expand later to other subjects).
Example 1:
- Teacher can chat with AI that knows the Sudents name, class, and what they are working on.
- AI can help the teacher with the lesson plan, students are gennerally having problems (Asking ai about certain problem often) X, enabeling the teacher to focus on that specific subject.
- AI can also help the teacher with the lesson plan, and give feedback on the lesson.
Example 2:
- Student can chat with AI that knows the students name, class, and what they are working on.
- AI can help the student with the lesson plan, specific tasks and problems (Without the teacher being present) + (Without giving the answer away, but instead guiding the student to the answer).
- AI can also help the student learn more effectively in a fun and engaging way.
# Core functionalities
- AI chatbot that can help with the lesson plan, specific tasks and problems (Without the teacher being present) + (Without giving the answer away, but instead guiding the student to the answer).
- Web application for the teacher to manage the students and the lesson plan.
- Web application for the student to track their progress, view schedules and achievements, and more.
- AI chat with AI that knows the Sudents name or Teachers name, class, and what they are working on.
- AI can help the teacher with the lesson plan, students are gennerally having problems (Asking ai about certain problem often) X, enabeling the teacher to focus on that specific subject.
- User can see their progress, schedules and achievements, and more.
- User can upload files, voice and chat with AI.
- Database for the, teachers, students, courses, lessons, tasks, and more.
- Authentication for the users.
# PERSONALITY
- You are a Danish Student Learning Assistant, friendly, supportive, and patient.
- You prioritize teaching critical thinking and problem-solving skills to students in 7., 8., and 9. klasse.
- Adapt responses to the student's knowledge level and explain concepts clearly.
- Encourage curiosity and foster understanding rather than simply providing answers.
- Use a tone that builds confidence and promotes a positive learning experience.
# TECH STACK
- **Frontend**: React.js, Tailwind CSS, Next.js
- **Backend**: Node.js (Express.js)
- **Database**: PostgreSQL
- **AI**: OpenAI GPT API for chatbot integration
- **Other Tools**: Docker, Git, CI/CD (GitHub Actions)
# ERROR FIXING PROCESS
Step 1: Explain the error in simple, clear terms.
Step 2: Provide a detailed solution with an example, if applicable.
Step 3: Offer additional debugging advice if the user faces repeated issues.
Step 4: Encourage the user to share code snippets for personalized help.
# BUILDING PROCESS
- Follow a structured, step-by-step approach.
- Provide clear explanations of each step in the development process.
- If the user struggles with a concept, re-explain it using simple analogies or examples.
# .ENV VARIABLES
**backend/.env**:
**frontend/.env**:
# CURRENT FILE STRUCTURE
'''tree -L 4 -a -I 'node_modules|.git|__pycache__|.DS_Store|.pytest_cache|.vscode|.cursorignore|.cursorrules|.venv'''
'''tree -I 'node_modules|.git|__pycache__|.DS_Store''''
'''tree /f /a # dispay all files and directories in the current directory'''
'''tree path\to\directory /a /f # dispay all files and directories in the current directory'''
'''tree /a /f > tree.txt''''''
tree -L 4 -a -I 'node_modules|.git'
├── .gitignore
├── Code
│ ├── .cursorignore
│ ├── .cursorrules
│ ├── Instructions
│ │ ├── database_setup.md
│ │ └── roadmap.md
│ ├── backend
│ │ ├── .env
│ │ ├── combined.log
│ │ ├── error.log
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── scripts
│ │ │ └── setup-db.sh
│ │ ├── src
│ │ │ ├── db
│ │ │ │ ├── index.ts
│ │ │ │ ├── init.ts
│ │ │ │ ├── schema.sql
│ │ │ │ └── seed.sql
│ │ │ ├── index.ts
│ │ │ ├── models
│ │ │ │ └── types.ts
│ │ │ ├── routes
│ │ │ │ └── api.ts
│ │ │ └── services
│ │ │ ├── db.service.ts
│ │ │ ├── error.service.ts
│ │ │ └── logger.service.ts
│ │ ├── test.py
│ │ └── tsconfig.json
│ ├── cursorrulesv1.txt
│ ├── database_handeling.md
│ ├── frontend
│ │ ├── .gitignore
│ │ ├── app
│ │ │ ├── globals.css
│ │ │ ├── layout.tsx
│ │ │ ├── page.tsx
│ │ │ ├── student
│ │ │ │ ├── chat
│ │ │ │ │ └── page.tsx
│ │ │ │ ├── courses
│ │ │ │ │ ├── [id]
│ │ │ │ │ └── page.tsx
│ │ │ │ ├── dashboard
│ │ │ │ │ └── page.tsx
│ │ │ │ └── schedule
│ │ │ │ └── page.tsx
│ │ │ └── teacher
│ │ │ ├── chat
│ │ │ │ └── page.tsx
│ │ │ ├── courses
│ │ │ │ ├── [id]
│ │ │ │ ├── manage
│ │ │ │ ├── page.tsx
│ │ │ │ └── submissions
│ │ │ ├── dashboard
│ │ │ │ └── page.tsx
│ │ │ ├── materials
│ │ │ │ └── page.tsx
│ │ │ ├── schedule
│ │ │ │ └── page.tsx
│ │ │ └── submissions
│ │ │ └── page.tsx
│ │ ├── components
│ │ │ ├── navigation.tsx
│ │ │ └── ui
│ │ │ ├── accordion.tsx
│ │ │ ├── alert-dialog.tsx
│ │ │ ├── alert.tsx
│ │ │ ├── aspect-ratio.tsx
│ │ │ ├── avatar.tsx
│ │ │ ├── badge.tsx
│ │ │ ├── breadcrumb.tsx
│ │ │ ├── button.tsx
│ │ │ ├── calendar.tsx
│ │ │ ├── card.tsx
│ │ │ ├── carousel.tsx
│ │ │ ├── chart.tsx
│ │ │ ├── checkbox.tsx
│ │ │ ├── collapsible.tsx
│ │ │ ├── command.tsx
│ │ │ ├── context-menu.tsx
│ │ │ ├── dialog.tsx
│ │ │ ├── drawer.tsx
│ │ │ ├── dropdown-menu.tsx
│ │ │ ├── form.tsx
│ │ │ ├── hover-card.tsx
│ │ │ ├── input-otp.tsx
│ │ │ ├── input.tsx
│ │ │ ├── label.tsx
│ │ │ ├── menubar.tsx
│ │ │ ├── navigation-menu.tsx
│ │ │ ├── pagination.tsx
│ │ │ ├── popover.tsx
│ │ │ ├── progress.tsx
│ │ │ ├── radio-group.tsx
│ │ │ ├── resizable.tsx
│ │ │ ├── scroll-area.tsx
│ │ │ ├── select.tsx
│ │ │ ├── separator.tsx
│ │ │ ├── sheet.tsx
│ │ │ ├── sidebar.tsx
│ │ │ ├── skeleton.tsx
│ │ │ ├── slider.tsx
│ │ │ ├── sonner.tsx
│ │ │ ├── switch.tsx
│ │ │ ├── table.tsx
│ │ │ ├── tabs.tsx
│ │ │ ├── textarea.tsx
│ │ │ ├── toast.tsx
│ │ │ ├── toaster.tsx
│ │ │ ├── toggle-group.tsx
│ │ │ ├── toggle.tsx
│ │ │ ├── tooltip.tsx
│ │ │ ├── use-mobile.tsx
│ │ │ └── use-toast.ts
│ │ ├── components.json
│ │ ├── hooks
│ │ │ ├── use-mobile.tsx
│ │ │ └── use-toast.ts
│ │ ├── lib
│ │ │ └── utils.ts
│ │ ├── next.config.mjs
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── postcss.config.mjs
│ │ ├── public
│ │ │ ├── placeholder-logo.png
│ │ │ ├── placeholder-logo.svg
│ │ │ ├── placeholder-user.jpg
│ │ │ ├── placeholder.jpg
│ │ │ └── placeholder.svg
│ │ ├── styles
│ │ │ └── globals.css
│ │ ├── tailwind.config.ts
│ │ └── tsconfig.json
│ ├── frontend.md
│ └── prompts.txt
├── README.md
└── tree.txt
# full file structure can be found in the tree.txt file in root directory.
# GITHUB PUSH PROCESS
1. Run tests to ensure all changes work correctly.
2. Commit the changes with a descriptive message:
3. Push the changes to the main branch:
# IMPORTANT
- Always include comments in your code to explain functionality.
- Repeat key instructions to ensure clarity and understanding.
# OTHER CONTEXT
- Keep accessibility in mind when designing UI/UX.
- Prioritize mobile responsiveness for better student and teacher experiences.
# COMMENTS
- Always include meaningful comments in your code for future readability and maintainability.
- Do not delete comments unless they are redundant or outdated.