RoadToDev is a web-based application developed as part of our "Software Development" course, where we were tasked with creating a real-life application using artificial intelligence. The platform helps developers generate personalized learning roadmaps based on their skills and interests. By analyzing user input from the form, the OpenAI API generates a roadmap outlining the areas the user should focus on, providing an interactive and dynamic experience. This project showcases a full-stack implementation using modern technologies and best practices.
Name | GitHub | ||
---|---|---|---|
Fernanda Neves (fmn) | fiefaneves | fernanda.marnev@gmail.com | |
Giovanna Mafra (gmm8) | GiovannaMafra | gmm8@cin.ufpe.br | |
Heitor Barros (hfmb) | H3ITHOR | eito@gmail.com | |
Josias Netto (jhcn) | JosiasNetto | jhcndev@gmail.com | |
Julia Zovka (jzs) | julia-zovka | jzs@cin.ufpe.br |
- Features
- Live Demo
- Technologies Used
- Getting Started
- Test locally
- Project Structure
- Contributing
- License
- User authentication with JWT, including login, registration, and password reset.
- AI-powered roadmap generation tailored to user preferences.
- Interactive form to evaluate developer skills.
- Progress tracking with visual indicators and percentage completion.
- Ability to mark topics as completed.
- Recommendations Based on Market Trends
- Interactive learning with recommended resources for each topic.
- Responsive and modern UI/UX.
Live Demo: RoadToDev
- Next.js (React Framework)
- TypeScript
- TailwindCSS
- Shadcn/UI
- Node.js
- Express
- dotenv
- cors
- mongoDB
- mongoose
- bcrypt
- jsonwebtoken
- nodemailer
- OpenAI API - chatgpt-3.5-turbo (for recommendations and roadmap generation)
Ensure you have the following installed:
- Node.js
- npm
-
Clone the repository:
git clone https://github.com/fiefaneves/RoadToDev.git cd RoadToDev git checkout locally-test
-
Install dependencies for the front-end:
cd front-end/my-app npm install next react react-dom npm install --save-dev typescript @types/react @types/node
-
Install dependencies for the back-end:
cd ../../back-end npm install cors openai dotenv express mongodb mongoose bcrypt jsonwebtoken
-
Set up environment variables:
- Create .env file in the back-end directory.
- Instruction to the Professor: Copy and paste the content of the "ENV-PROJECT" file anexed in the classroom or in the drive of the team.
- Example variables for the back-end:
OPENAI_API_KEY=your_openai_api_key MONGO_DB_KEY=your_mongo_db_key JWT_SECRET=meu_segredo_super_secreto EMAIL_USER='APPLICATION_EMAIL' EMAIL_PASS='EMAIL_PASSWORD'
-
Start the back-end server:
cd back-end npm run dev
-
Start the front-end development server:
-
open a new terminal
cd front-end/my-app npm run dev
- Open the app in your browser: http://localhost:3000
frontend/
│── .next/ #next modules
│── node_modules/ #nodejs modules
│── public/
└── src/
│── app/
│ │── api/
│ │ └── generate.js
│ │── create_account/
│ │ └── page.tsx
│ │── esqueci-senha/
│ │ └── page.tsx
│ │── forms/
│ │ └── page.tsx
│ │── intermediateScreen/
│ │ └── page.tsx #user screen
│ │── mudar-senha/
│ │ └──page.tsx #login screen
│ │── roadMap/
│ │ └──page.tsx #generated roadmap screen
│ │── test/
│ │ └── button.test.tsx
│ │ └── links.test.tsx
│ │ └── sidebar.test.tsx
│ │── layout.tsx #layout configuration
│ │── page.tsx #home page info
│ └── RoadMapContext.tsx
│── Components/
│ │── ui/ #components from shadcn ui
│ └── sidebar.tsx
│── hooks/ #reusable functions
│── lib/
│ └── utils.ts
└── styles/
└─ globals.css #global css
backend/
│──data/ #json with resources
│── node_modules/ #nodejs modules
│── src/
│ │── config/
│ │ │── dbConnection.js #Mongodb configuration
│ │ └── open-ai.js #open ai configuration
│ │── controllers/
│ │ │── generative.js #generate function
│ │ │── linksController.js #functions to links
│ │ └── usersController.js #functions to login, passwords and roadmaps
│ │
│ │── middleware/
│ │ └── authMiddleware.js #intermediate functions
│ │── models/
│ │ │── roadMapModel.js #RoadMap schema
│ │ └── usersModel.js #Users schema
│ └── routes/
│ └── usersRoutes.js #creates the routes
│── .env
│── package-lock
│── package
└── server.js #creates a server at a port
Contributions are welcome!
- Fork the repository.
- Create a feature branch
git checkout -b feature/new-feature
- Commit your changes:
git commit -m "Add new feature"
- Push to the branch:
git push origin feature/new-feature
- Submit your pull request.
This project is licensed under the MIT License. See the LICENSE file for details.