Thanks to visit codestin.com
Credit goes to github.com

Skip to content

paulhenry46/TopoClimb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TopoClimb

TopoClimb is a web-app to manage routes of indoor climbing sites and generate topo.

Features

  • Upload map of area in svg format
  • Draw lines on map of area
  • Create routes, lines, sectors
  • Create public page for each indoor site
  • Comment routes and propose a new cotation
  • Generate topo of the site
  • RESTful API for mobile app development and integrations

API Mode

TopoClimb now includes a RESTful API that allows you to integrate climbing site data into mobile applications and third-party services.

API Features

  • Public Endpoints: Read-only access to sites, areas, sectors, lines, routes, contests, teams, and tags
  • User Endpoints: Authenticated users can view and update their profile
  • No Admin Features: The API excludes administrative operations (create, update, delete) to maintain data integrity
  • Versioned: All endpoints are versioned (v1) for future compatibility

For detailed API documentation, see API_DOCUMENTATION.md

Quick Start with API

  1. Create an API token from your TopoClimb account
  2. Use the token to authenticate API requests:
    curl -H "Authorization: Bearer YOUR_TOKEN" https://your-site.com/api/v1/user
  3. Access public endpoints without authentication:
    curl https://your-site.com/api/v1/sites

Stack

  • Laravel 12
  • Livewire 3
  • Tailwindcss 4
  • Inkscape

Setup

You will need a LAMP stack. In this process, we use Apache, MariaDB and PHP 8.3

  • Install PHP and extensions required by Laravel : apt install php8.3 php8.3-ctype php8.3-bcmath php8.3-curl php8.3-common php8.3-mbstring php8.3-xml php8.3-imagick
  • Install Inkscape (required for processing map of areas) : apt install inkscape
  • Create and set up BDD :
    • mysql -u root -p
    • CREATE DATABASE TopoClimbDB;
    • CREATE USER 'TopoClimbUser'@'localhost' IDENTIFIED BY 'YourPassword';
    • GRANT ALL PRIVILEGES ON TopoClimbDB.* TO 'TopoClimbUser'@'localhost';

Warning

You will need to store the credential in the .env file !

  • Install Imagick and Ghostscript

    • apt install ghostscript
  • Clone the app and move it to where you want

  • run composer install

  • run npm install and npm run build

  • edit .env file and put the Database infos

  • run php artisan key:generate

  • run php artisan migrate

  • run php artisan db:seed

  • run php artisan storage:link

An user with the hightest permissions is created, so you can log in with : Mail : [email protected] / Password : d4d5ehdp785pd81

Caution

Don't forget to change the password after the first login, or better, create a new admin account and remove the default !

  • Create the Apache2 site file :
<VirtualHost *:80>
    DocumentRoot /path/to/public_folder
    ServerName topoclimb.test
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    <Directory /path/to/public_folder>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>
  • You can active https with certbot.

Contributing

  • Clone the app and move it to where you want
  • run composer install
  • edit .env file and put the Database infos
  • run php artisan key:generate
  • run php artisan migrate
  • run php artisan db:seed
  • run php artisan storage:link
  • run npm install
  • run npm run dev
  • run php artisan serve
  • It's ready. Thank you for your contributions !

About

A webapp made with Laravel to manage routes of indoor climbing sites and generate topo

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages