https://github.com/luuppiry/luuppi-next
🔁 The backbone of the luuppi.fi website (new weba) built using the latest bleeding-edge technologies, utilizing Next.js and the headless content management system, Strapi.
https://github.com/luuppiry/luuppi-next
computer-science luuppi luuppi-ry nextjs tailwind tampere-university tuni weba
Last synced: 10 months ago
JSON representation
🔁 The backbone of the luuppi.fi website (new weba) built using the latest bleeding-edge technologies, utilizing Next.js and the headless content management system, Strapi.
- Host: GitHub
- URL: https://github.com/luuppiry/luuppi-next
- Owner: luuppiry
- License: mit
- Created: 2024-01-20T16:37:27.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-08-14T20:18:21.000Z (10 months ago)
- Last Synced: 2025-08-14T22:14:11.166Z (10 months ago)
- Topics: computer-science, luuppi, luuppi-ry, nextjs, tailwind, tampere-university, tuni, weba
- Language: TypeScript
- Homepage: https://luuppi.fi
- Size: 26.5 MB
- Stars: 11
- Watchers: 3
- Forks: 5
- Open Issues: 23
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
- Security: .github/SECURITY.md
Awesome Lists containing this project
README

# [Luuppi ry - Weba](https://luuppi.fi)
[Luuppi ry](https://luuppi.fi) is the subject association for students studying mathematics, statistical data analysis, and computer science at Tampere University. Since 1969, Luuppi has been actively promoting the interests of its members and organizing a variety of free-time activities. It proudly holds the distinction of being the largest subject association at the [University of Tampere](https://www.tuni.fi/en)!
## About this Repository
This repository is the foundation of [luuppi.fi](https://luuppi.fi) website. It contains two main components: a Content Management System (CMS) powered by [Strapi](https://strapi.io/), and the website's frontend built using [Next.js](https://nextjs.org/). This project is led by Luuppi's **WWW / IT representatives**, who are elected annually through a voting process. If you have any questions about the repository, you can contact the team at **webmaster@luuppi.fi**.
## Development setup
### Frontend (_next_)
> [!IMPORTANT]
> The frontend content is primarily fetched from the CMS. Therefore, when developing the frontend, you should work with an instance of the CMS. If you are solely focused on frontend development without modifying the CMS logic, you can even use the production instance for this purpose. To make this adjustment, you can change the `NEXT_PUBLIC_STRAPI_BASE_URL` inside `next/.env.local`.
**Note:** The following commands should be executed within the `next` folder.
#### Prerequisites
Before you begin, ensure you have the following prerequisites installed on your system:
- [Node.js](https://nodejs.org/en) (Version >= v20.xx)
#### 1. Configure `.env.local`
First, fill in the configuration file `.env.local`. You can use `example.env` as a reference.
#### 2. Install Dependencies
Run the following command to install project dependencies:
```bash
npm i
```
#### 3. Start the Development Server
Launch the development server by running the following command:
```bash
npm run dev
```
The development server should now be up and running at [http://localhost:3000](http://localhost:3000).
### CMS (_strapi_)
Strapi doesn't necessitate extensive coding. Initially, Strapi is bootstrapped using a CLI command. Subsequent 'development' mainly involves running a local instance and utilizing the content-type builder, which allows for local file changes. These changes can later be pushed to the remote server. Importantly, making modifications with the content-type builder can only be performed in the development environment; it's restricted in the production environment.
In summary, you use the content-type builder locally to structure the correct 'data models.' Once you've finished your work, you can push the changes to the remote server and switch to production mode.
> [!IMPORTANT]
> When modifying content in Strapi, update the newly generated types on the frontend by running `copyTypes.js` in the project's root. This action will copy the Strapi-generated types to the frontend.
**Note:** The following commands should be executed within the `strapi` folder.
#### Prerequisites
Before you begin, ensure you have the following prerequisites installed on your system:
- [Node.js](https://nodejs.org/en) (Version >= v20.xx)
#### 1. Configure `.env`
First, fill in the configuration file `.env`. You can use `example.env` as a reference.
#### 2. Install Dependencies
Run the following command to install project dependencies:
```bash
npm i
```
#### 3. Start the Development Server
Launch the development server by running the following command:
```bash
npm run dev
```
The development server should now be up and running at [http://localhost:1337](http://localhost:1337).
## Port Overview
The following ports are used in different environments:
### Production Environment
- Frontend (Next.js): 3000
- Strapi CMS: 1337
- Frontend PostgreSQL: 5433
- Strapi PostgreSQL: 5432
- Redis: 6379
### Development Environment
- Frontend (Next.js): 3003
- Strapi CMS: 1338
- Frontend PostgreSQL: 5434
- Strapi PostgreSQL: 5452
- Redis: 6382
## Contribution
We encourage you to contribute to making the weba™️ better! Please refer to the [Contributing Guidelines](.github/CONTRIBUTING.md) for instructions on how to proceed.
Trying to report a possible security vulnerability in this repository? Please
check out our [Security Policy](.github/SECURITY.md) for
guidelines about how to proceed.
## Contributors ♥️ Thanks
We extend our gratitude to all those who take the time to improve Luuppi's website. The main goal of this project being open-source is to enable everyone to be part of it and, most importantly, to learn from a "real project" with a very low threshold.
### Open Discussion
We have public [Telegram-channel](https://t.me/luupinweba) for people interested about Luuppi's web development :)
## License
This repository is released under the [MIT License](https://opensource.org/licenses/MIT).
Bonus
# Time lost graveyard 🪦
_Beginning of time starts from January 1, 1970, 00:00:00 UTC_
Feel free to bring your meter here:
#### Kasperi Pohtinen
[](https://wakatime.com/badge/user/a04247ba-6c76-456e-b04a-3dfa0bc6df41/project/018d2279-a88c-4764-afbe-c443f3ae9726)
#### Juliusz Kotelba
[](https://wakatime.com/badge/user/c8b15fbf-a210-457e-9da7-a0093d788004/project/7228ff6c-cafc-4c5f-b019-e1ef70fabea4)